grep 出力を変更する方法:各行の各結果を取得する
質問
grepを使用してvarに含まれるファイルからパターンを検索しています
コードはここにあります:
result=`grep "$pattern" $file`
echo $result
結果:A) いくつかの単語 B) いくつかの行 C) いくつかの数字
結果を 1 行に出力します。行aの結果を1つ取得したいのですが
のように:
A) somewords
B) somelines
C) somenumbers
どうやって?
ありがとう
解決
あなたの意見を引用してください $result
変数と改行は保持されます。
result=$(grep "$pattern" $file)
echo "$result"
これが機能する理由は、bash で何かを二重引用符で囲むと、その引用符内のすべてが 1 つの単語として扱われるためです。つまり対象にはならないということです 単語の分割. 。以下も参照してください。 http://mywiki.wooledge.org/WordSplitting
使うと効果的 $result
, 、これは次のように展開されます (改行が区切り文字として扱われるため):
echo A) somewords B) somelines C) somenumbers
使用するときは "$result"
単語の分割を避けると、次のように展開されます。
echo "A) somewords
B) somelines
C) somenumbers"
追記:を使用して $(...)
バッククォートの代わりにすると、可読性が向上し、移植性も向上します。
所属していません StackOverflow