linux – 如何为需要文件名的ed提供stdin?

这里需要一些基本的unix shell

对于我看不到“ – ”目标的命令,比如ed:

print '%-2p\nq' | ed -s FILE

我可以从某个cmd的stdout而不是FILE名称提供一个流作为要处理的数据:

SomeCMD | ed -s SOMETHING_MAGICAL <<< 'print '%-2p\nq'

有可能吗?

解决方法:

ed从stdin读取它的命令,所以如果你的文件也在stdin上,你怎么工作?

实际上,如果将输出连接到一行,则可以通过stdin提供文件输入

i

在开始时,开始写入数据,然后附加一个.结束输入,然后是任何命令.您甚至可以将结果输出到stdout.请记住,如果文件中只有一行,只有一行,它就会中断.在里面.

所以如果文件input.file包含这个:

First line
Second line
Third line

一个文件commands.list包含这个:

.
1d
1,$w /dev/stdout

然后这个命令行……

echo i | cat - input.file commands.list | ed -s

输出这个:

Second line
Third line

我敢说tadaaaaa! ?

注意:你可以防止单一的情况.文件中的行通过一个过滤掉任何这样的行的过滤器来管理文件,然后用ed命令再次取消它们.我把它留给你的聪明才智.

另一个注意事项:你真的应该使用sed这个,但我不能让它无法完成评论.

上一篇:P6560 [SBCOI2020] 时光的流逝


下一篇:HDU - 6582 Path