如何匹配替换命令的一组特定行?
(不正确):
sed -e'71,116,211s/[ ]+$//' ...
我只想去除第 71、116 和 211 行的尾随空格
如何匹配替换命令的一组特定行?
(不正确):
sed -e'71,116,211s/[ ]+$//' ...
我只想去除第 71、116 和 211 行的尾随空格
您可以尝试以下方法:
awk 'NR== 71 || NR == 116 || NR == 211 {sub(/ *$/,"",$0)}{print $0}'
或者
sed '71s/ *$//;116s///;211s///'
sed '71bl;116bl;211bl;b;:l;s/[ ][ ]*$//' input
对于任何指定的行,此脚本会跳转到 label l
。其他行将跳到脚本的末尾,以branch
.
还有一个 awk 解决方案:
awk -v k="71,116,221" 'BEGIN{split(k,a,",")}
(NR in a) { sub(/ *$/,"",$0) }1' input
这可能对您有用(GNU sed):
sed -r '/\s+$/!b;71s///;116s///;221s///' file
也许:
sed -e '/ *$/!b' -e '71s///' -e '116s///' -e '221s///' file
或者已经说过:
sed -e '71ba' -e '116ba' -e '221ba' -e 'b' -e ':a' -e 's/ *$//' file