ファイルは次のとおりです:
BASH.NIR SH.ABI
awkスクリプトが必要です表示するには:
User is NIR, SHELL is BASH User is ABI, SHELL is SH
パラメータを文字で分割する方法がわかりません。アイデアは次のとおりです:
cat file.txt | awk "{print "User is " afterDot($1) ", SHELL is " beforeDot($1)}"
回答
awk
で文字列関数を使用できます。
p>
$ (echo BASH.NIR; echo SH.ABI FOOBAR) | awk "{p=index($1,".");print "User is", substr($1,p+1) ", SHELL IS", substr($1,0,p-1)}" User is NIR, SHELL IS BASH User is ABI, SHELL IS SH
index
関数は、検出される文字(この場合はドット)の位置を返します。そしてstrstr
はサブストリングを返します。ドットを含めないようにp+1
とp-1
を使用します。
詳細については、awk
マンページの[文字列関数]セクションを参照してください。
回答
フィールド区切り文字として.
を使用できます:
awk -F. "{ print "User is " $2 ", SHELL is " $1 }" file.txt
コメント
- テキストファイルは空白もあります
- @nir質問に正確な入力のサンプルを貼り付けてください。'どのように見えるか推測できません適切に表現しない限り、同様です。
- @ nir- 'は、実際のサンプルデータを含めるのが常に最善です。不自然なデータは、通常、間違った解決策につながるため、通常、回答'の時間を無駄にします。
- そうです、次回は形成されます。