いくつかの一般的なヒント(DOS行の終了の問題以外):
cat
ファイルを連結するためのものであり、ファイルを読み取ることができる唯一のツールではありません!コマンドがファイルを読み取らない場合は、のようなリダイレクトを使用しますcommand < file
。
-F
次の代わりに、オプションでフィールドセパレータを設定できます。
cat foo | awk 'BEGIN{FS="|"} {print $2 " " $1}'
試す:
awk -F'|' '{print $2" "$1}' foo
これは出力します:
com.emailclient.account name1@gmail.com
com.socialsite.auth.accoun name2@msn.com
目的の出力を取得するには、さまざまなことを行うことができます。私はおそらくsplit()
2番目のフィールドだと思います:
awk -F'|' '{split($2,a,".");print a[2]" "$1}' file
emailclient name1@gmail.com
socialsite name2@msn.com
最後に、最初の文字を大文字に変換するのは、優れた組み込み関数awk
がないため、少し面倒です。ucfirst()
awk -F'|' '{split($2,a,".");print toupper(substr(a[2],1,1)) substr(a[2],2),$1}' file
Emailclient name1@gmail.com
Socialsite name2@msn.com
より簡潔なものが必要な場合(サブプロセスを放棄しますが)、次のことができます。
awk -F'|' '{split($2,a,".");print a[2]" "$1}' file | sed 's/^./\U&/'
Emailclient name1@gmail.com
Socialsite name2@msn.com