質問

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"

追記:を使用して $(...) バッククォートの代わりにすると、可読性が向上し、移植性も向上します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top