加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 显示除文件的最后一行之外的所有内容:命令替换和标准I

发布时间:2020-12-15 18:48:16 所属栏目:安全 来源:网络整理
导读:我一直试图让头部实用程序显示除标准输入的最后一行之外的所有内容.我需要的实际代码是cat myfile.txt |的行head -n $(($(wc -l)-1)).但那没有办法.我在达尔文/ OS X上做这个,没有那些能够得到类似输出的head -n-1的很好的语义. 这些变化都不是有效的. cat m
我一直试图让头部实用程序显示除标准输入的最后一行之外的所有内容.我需要的实际代码是cat myfile.txt |的行head -n $(($(wc -l)-1)).但那没有办法.我在达尔文/ 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))

这可以理解,给我一个非法的行数错误.但是至少告诉我,在将东西传递到subshel??l /命令替换之前,头节目没有消耗标准输入,这是一种遥远的可能性,但是我还是想排除它.

echo "hello" | head -n $(cat && echo 1)

什么解释了head和wc的行为及其通过subshel??ls的互动?谢谢你的帮助.

头是错误的工具.如果您想查看除最后一行之外的所有内容,请使用:
sed $d

的原因

# Sample of incorrect code:
echo "hello" | head -n $(wc -l | sed -E -e 's/s//g')

失败是wc消耗所有的输入,没有任何东西可以看到. wc从其运行的subshel??l继承其stdin,它正在从echo的输出读取.一旦它消耗输入,它返回,然后头尝试读取数据…但它都消失了.如果要读取输入两次,则必须将数据保存在某处.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读