awkを使用すると、指定されたインデックスの単語を次のように出力できます。
$ echo "The quick brown fox jumps over the lazy dog" | awk '{print $3, $7}'
brown the
ただし、指定した単語「brown」と「the」の間のテキストも取得したいと思います。だから私は出力をそのようにしたいと思います。
brown fox jumps over the
特にawkを使用する必要はありませんが、awkを使用するシェルスクリプトの他の部分との一貫性を保つために、単語のインデックス作成とトークン化はawkのものと一致する必要があります。
最初のインデックスから最後のインデックスまで単語を印刷することを考えましたが、これでは単語間の空白が保持されません。
これを複雑ですがより正確に言うと、インデックスで指定された単語の先頭で始まり、別のインデックスで指定された別の単語の終わりで終わるテキストを取得したいと思います。どうすればそれを達成できますか(できればbashループなしで)?
ではgawk
、あなたが使用できるsplit()
フィールドとその区切りを決定するための機能を:
$ echo "The quick brown fox jumps over the lazy dog" | awk '{ split($0, a, "\\s+", s); for (i = 3; i <= 7 && i <= length(a); i++) printf "%s%s", a[i], (i < 7 ? s[i] : "\n") }'
brown fox jumps over the
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加