8

この質問はすでに尋ねられていることは知っていますが、私が見つけた解決策はどれもうまくいきませんでした! 次のような出力を持つプログラムがあります。

COUNT|293|1|lps

私は2番目のフィールドを持つことに興味がありますが、これらの試みのどれもうまくいきませんでした:

./spawn 1 | cut -d '|' -f2
./spawn 1 | cut -d \| -f2
./spawn 1 | awk -F "|" '{print $2}'
./spawn 1 | awk 'BEGIN{FS="|"} {print $2}'
./spawn 1 | sed 's/|/;/g'
./spawn 1 | sed 's/\|/;/g'

ただし、出力は常に同じです。

COUNT|293|1|lps

bash のどこかにバグがありますか? Linux ホストでも、busybox の ash を使用した組み込みデバイスでも結果は同じです。どんなポインタでも大歓迎です!

EDIT 私のせいで、出力は stderr にありました ... ._.

./spawn 1 2>&1 | cut -d '|' -f2
4615

お騒がせしてすみません!

4

2 に答える 2

9

質問者がこれが問題であることを確認したので、答えとしてコメントで推測したことを繰り返します。

ここでの問題は./spawn 1、標準出力ではなく標準エラーに出力されることです。を使用して出力をリダイレクトできる2>&1ため、次のように動作するはずです。

./spawn 1 2>&1 | cut -d '|' -f2
于 2012-01-26T13:43:18.793 に答える
2
$ echo 'COUNT|293|1|lps' | cut -d'|' -f2
293

ここで動作します。

于 2012-01-26T13:24:25.427 に答える