awkの2つのフィールド区切り文字(コロンとスペース)


8

1つがスペースである場合、awkコマンドで2つのフィールド区切り文字をどのように指定できますか?これはawkに埋め込まれたif-else条件を使用することで実行できると思いますが、正確なコマンドについてはわかりません。

サンプルファイルは次のとおりです。

cat test.txt
Swapnil Engineer 20000
Avinash:Doctor:30000
Dattu GovntJob 50000
Amol:Master:10000

2列目($ 2)を印刷します。予想される出力は次のとおりです。

Engineer
Doctor
GovntJob
Master

スペースとコロンの両方をフィールドセパレーターとして配置しようとすると、構文エラーで失敗しました。

awk -F[ :] '{print $2}' test.txt
awk: cmd. line:1: :]
awk: cmd. line:1: ^ syntax error

2つのフィールド区切り文字を使用してawk機能を利用するにはどうすればよいですか?


イエティの答えに加えて、引用符で囲まれていない空白でシェル分割がそう代わりに、AWKの引数のリストを作成することを忘れないでください-F[ :]、それが得た(1つの引数)-F[:]このチャートは非常に便利です(一重/二重引用符の垂直矢印に注意してください)。
arielCo

ArielCoに感謝します。
Swapnil Dhule

回答:


13

あなたは正しい軌道に乗っています!
不足している引用符を追加して[ :]ください:

awk -F'[ :]' '{print $2}' test.txt
Engineer
Doctor
GovntJob
Master
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.