将这两个 SED 命令组合在一起的最佳方法是什么?第一个命令搜索 CSP,然后向下移动一行。第二个命令在第 3 列中放置一个分号。
sed -ne '/CSP/{n;p;}' test1>test2
sed 's/./;/3' test2>final
该命令需要作用于一行数据,不能单独执行。
答案1
一般来说,sed
命令可以放在一起,用换行符或分号分隔。实际上有点像 sh 或 python。 (大多数sed
命令,即某些命令需要换行符。)
因此,要将n
,p
和放在一起,您可以只使用分号,就像您在第一个命令中s
所做的那样。{n;p}
在这种情况下,完整的命令是:
sed -ne '/CSP/{n;s/./;/3;p;}' test1 > final
或者你可以用换行符来代替:
sed -ne '/CSP/{n
s/./;/3
p
}' test1 > final
但是,对于简单的单行代码来说,在命令行上执行此操作有点烦人(显然在 中更难),但如果将脚本保存到文件中,csh
则可能更有用。sed
答案2
我还发现,当我必须使用较大的文件并保持更多文件内容不变时,删除一些参数会有所帮助。我正在回答这个问题,以防将来有人查找这个问题。
sed '/CSP /{n;s/./;/3;}' test1>test2