awkとcut、grepの正確な違いは何ですか? [閉鎖]

awkとcut、grepの正確な違いは何ですか? [閉鎖]

この2つの技術を使用して、ファイルから目的の行の2番目の列を取得できることを知っています。

awk '/WORD/ { print $2 }' filename

または

grep WORD filename| cut -f 2 -d ' '

私の質問は次のとおりです

  • 上記の2つのコマンドの違いは何ですか?
  • どちらが最高のパフォーマンスを持っていますか?
  • awk使用と使用の利点は何であり、cutその逆の場合も同じですか?
  • awk私たちにはどんな選択が与えられましたかcut?その逆も同じですか?

ベストアンサー1

2つのライン間の最も重要な違いは、入力によって異なります。フィールド区切り文字としてcut単一の文字を使用し(デフォルトはTAB)、この文字が表示されるたびに新しいフィールドが開始されます。しかし、より柔軟です。区切り文字は変数にあり、空の文字列(各入力文字が別々のフィールドを形成する)、単一文字、または正規表現にすることができます。単一の空白文字(デフォルト)の特別な場合は-dawkFS注文するスペース。また、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、 との間の空白の順序に基づいて分割が行われ、各スペースは区切り文字として使用されます。abcdefcut

あなたが取るものはあなたが達成したいものに依存します。それ以外の場合はcut小さく、単一目的のツールですが、独自のawkプログラミング言語があるため、より高速であることを願っています。

おすすめ記事