这里需要一些基本的unix shell:
对于我看不到“ – ”目标的命令,ed说:
print '%-2pnq' | ed -s FILE
我可以提供从某些cmd的标准输出stream,而不是作为要处理的数据的文件名:
SomeCMD | ed -s SOMETHING_MAGICAL <<< 'print '%-2pnq'
有可能吗?
希望sed对ed的方便的j命令有相当的效果
ed从标准输入读取它的命令,所以如果你的文件也在标准输入,你是如何工作的?
实际上,如果您将输出连接到一行,则可以通过stdin提供文件输入
i
在开始的时候,开始写数据,然后追加一个。 结束输入,然后是任何命令。 你甚至可以把结果输出到标准输出。 请记住,如果文件中有一行只有一行,就会中断。 在里面。
First line Second line Third line
. 1d 1,$w /dev/stdout
那么这个命令行…
echo i | cat - input.file commands.list | ed -s
会输出这个:
Second line Third line
我敢说tadaaaaa! ?
注意:你可以防止单身的情况。 通过将文件通过一个过滤器来传输文件中的行,然后用ed命令重新使用。 我把这个留给你的聪明才智
另一个注意事项:你真的应该使用sed这个,但我不能让它做不了评论。
您使用r来读取到文本缓冲区中的命令输出。 所以,便携式:
printf '%sn' 'r !df -h' g/tmpfs/d,pq | ed -s
要么
ed -s << IN r !df -h g/tmpfs/d,p q IN
上面读取df -h的输出,删除与tmpfs匹配的行并打印结果。
如果你的shell支持进程替换:
printf '%sn' g/tmpfs/d,pq | ed -s <(df -h)
用gnu ed SOMETHING_MAGICAL被称为! 。
根据man页:
如果给出的话,通过阅读'文件'开始编辑。 如果'文件'以'!'开始,读取shell命令的输出。
printf '%sn' g/tmpfs/d,pq | ed -s '!df -h'
或者, herestring :
ed -s '!df -h' <<< $'g/tmpfs/dn,pnqn'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。