「filename」というファイルで「yellow」という単語を含む行を探しているとしましょう。その後、出力に「シャツの色は黄色です」と表示したいと思います。
「filename」ファイルから抽出した行が次のようになるとします。
blue green orange black purple white yellow pink
私はこのように考えていましたが、それが正しくないことを知っています。
cat filename | grep yellow | awk '{print $7; echo "The colour of the shirt is {$7}}
ベストアンサー1
デフォルトでは、grepを使用した後、1行の出力を取得しました。次に、行の7番目のフィールドを入力し、「シャツの色は「{フィールド7の出力}」と言いたいと思います。
まあ、それはもっと理解できます。
文字列で7番目のフィールドを印刷するには、次のようにします。
awk '{ printf "The color is %s\n", $7 }'
または
awk '{ print "The color is " $7 }'
(引用符で囲まれた文字列との間にはカンマやプラス記号、または何もありません。$7
文字列は互いに隣に書くだけでawkで連結されます。)
grep
スキップして内部的に同じことを行うこともできますawk
。
awk '/some regex/ { printf "the seventh field is %s\n", $7 }'
awk で許される正規表現はgrep -E
.(微妙な違いがあるかどうか覚えていないので、「ほとんど」) と同じです。ただし、パターンマッチングを特定のフィールドとして指定することもできます。
awk '$3 ~ /regex for field three/ { printf "the seventh field is %s\n", $7 }'
もちろん、一致するすべての行を処理します。愚かな例:
$ awk '$1 ~ /^j/ { printf "the shirt of %s is %s\n", $1, $2 } ' < shirts
the shirt of jimmy is blue
the shirt of joe is red