この2つの技術を使用して、ファイルから目的の行の2番目の列を取得できることを知っています。
awk '/WORD/ { print $2 }' filename
または
grep WORD filename| cut -f 2 -d ' '
私の質問は次のとおりです
- 上記の2つのコマンドの違いは何ですか?
- どちらが最高のパフォーマンスを持っていますか?
awk
使用と使用の利点は何であり、cut
その逆の場合も同じですか?awk
私たちにはどんな選択が与えられましたかcut
?その逆も同じですか?
ベストアンサー1
2つのライン間の最も重要な違いは、入力によって異なります。フィールド区切り文字としてcut
単一の文字を使用し(デフォルトはTAB)、この文字が表示されるたびに新しいフィールドが開始されます。しかし、より柔軟です。区切り文字は変数にあり、空の文字列(各入力文字が別々のフィールドを形成する)、単一文字、または正規表現にすることができます。単一の空白文字(デフォルト)の特別な場合は-d
awk
FS
注文するスペース。また、awk
先行スペースは基本的に抑制されます。
比較してください:
$ echo "abc def" | cut -f 2 -d ' '
def
$ echo "abc def" | cut -f 2 -d ' '
$ echo " abc def" | cut -f 2 -d ' '
abc
$ echo "abc def" | awk '{ print $2 }'
def
$ echo "abc def" | awk '{ print $2 }'
def
$ echo " abc def" | awk '{ print $2 }'
def
ここではawk
、 との間の空白の順序に基づいて分割が行われ、各スペースは区切り文字として使用されます。abc
def
cut
あなたが取るものはあなたが達成したいものに依存します。それ以外の場合はcut
小さく、単一目的のツールですが、独自のawk
プログラミング言語があるため、より高速であることを願っています。