文字によるawk分割パラメータ

ファイルは次のとおりです:

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+1p-1を使用します。

詳細については、awkマンページの[文字列関数]セクションを参照してください。

回答

フィールド区切り文字として.を使用できます:

awk -F. "{ print "User is " $2 ", SHELL is " $1 }" file.txt 

コメント

  • テキストファイルは空白もあります
  • @nir質問に正確な入力のサンプルを貼り付けてください。'どのように見えるか推測できません適切に表現しない限り、同様です。
  • @ nir- 'は、実際のサンプルデータを含めるのが常に最善です。不自然なデータは、通常、間違った解決策につながるため、通常、回答'の時間を無駄にします。
  • そうです、次回は形成されます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です