head
標準入力の最後の行を除くすべてをユーティリティに表示させようとしています。私が必要とした実際のコードは、cat myfile.txt | head -n $(($(wc -l)-1))
. しかし、それはうまくいきませんでした。私はこれを Darwin/OS X で行っていますが、これにはhead -n -1
同様の出力が得られるような優れたセマンティクスがありません。
これらのバリエーションはどれも機能しません。
cat myfile.txt | head -n $(wc -l | sed -E -e 's/\s//g')
echo "hello" | head -n $(wc -l | sed -E -e 's/\s//g')
より多くのバリエーションをテストしたところ、特にこれが機能することがわかりました。
cat <<EOF | echo $(($(wc -l)-1))
>Hola
>Raul
>Como Esta
>Bueno?
>EOF
3
これも機能する簡単なものです。
echo "hello world" | echo $(($(wc -w)+10))
これにより、当然のことながら、不正な行数エラーが発生します。しかし、少なくともhead
、サブシェル/コマンド置換に何かを渡す前に、プログラムが標準入力を消費していないことがわかります。これはリモートの可能性ですが、とにかく除外したかったのです。
echo "hello" | head -n $(cat && echo 1)
ここでサブシェルを介した と の動作とそれらの相互作用をhead
説明するものは何ですか? wc
ご協力いただきありがとうございます。