我一直试图让头部实用程序显示除标准输入的最后一行之外的所有内容.我需要的实际代码是cat myfile.txt |的行head -n $(($(wc -l)-1)).但那没有办法.我在达尔文/ OS X上做这个,没有那些能够得到类似输出的head -n-1的很好的语义.
原文链接:https://www.f2er.com/bash/386391.html这些变化都不是有效的.
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))
这可以理解,给我一个非法的行数错误.但是至少告诉我,在将东西传递到subshell /命令替换之前,头节目没有消耗标准输入,这是一种遥远的可能性,但是我还是想排除它.
echo "hello" | head -n $(cat && echo 1)
什么解释了head和wc的行为及其通过subshells的互动?谢谢你的帮助.