这里需要一些基本的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这个,但我不能让它无法完成评论.