2

いくつかのコマンドからのテキストがあります(例ではecho -e "10 ABC \n5 DEF \n87 GHI")。このテキストはパイプラインを通過し、必要な出力が得られます (例ではGHI)。必要な出力は、次のパイプライン ステップに送信されます (例では| xargs -I {} grep -w {} FILES |)。
私の質問は
次のとおりです。次のステップに送信される前に、変数を「パイプ間」出力に追加したいのですが、どうすればよいですか?


例:

echo -e "10 ABC \n5 DEF \n87 GHI" | 
   sort -nr -k1 |
   head -n1 |
   cut -f 2 |  # Wanted output comes here. I want to append it to a variable before it goes to `grep`
   xargs -I {} grep -w {} FILES |
   # FOLLOWING ANALYSIS
4

3 に答える 3

4

パイプラインの途中でシェル変数を設定することはできませんが、teeコマンドを使用して出力をファイルに送信し、後でそのファイルを読み取ることができます。

echo -e "10 ABC \n5 DEF \n87 GHI" | 
   sort -nr -k1 |
   head -n1 |
   cut -f 2 |
   tee intermediate.txt |
   xargs -I {} grep -w {} FILES |
   # FOLLOWING ANALYSIS

# intermediate.txt now contains 87 GHI
于 2013-10-17T15:10:53.890 に答える
1

このようなものはどうですか

echo -e "10 ABC \n5 DEF \n87 GHI" | sort -nr -k1 | head -n1 | cut -f 2 | while read MYVAR; do echo "intermediate value: $MYVAR"; echo $MYVAR | xargs -I {} grep -w {} FILES; done
于 2013-10-17T15:19:10.403 に答える