是否可以将行位置一定范围内的/n(例如,用空格)替换为 sed?
这是一个没有范围过滤器的示例。是否可以以某种方式在 sed 中设置范围?
for f in `find ${_filedir} -type f`
do
#replace all LF with spaces
sed 's/n/ /g' ${f} > ${f}.noCR
done
好的,这里有一个示例:
让我们看几行:
"我现在想挣脱"
"朋友就是朋友"
我想用 0 到 16 范围内的"m"替换任何"n",结果是:
"我现在想挣脱"
"阿德弗里姆德会成为朋友"
再次编辑
尝试awk
:
awk '{l=substr($0,1,10);r=substr($0,11);gsub(/n/,"m",l);print l r}' file
其中l
是字符串的左侧,r
是右侧,gsub()
进行全局替换。
编辑
我可能会使用 Bash 参数替换 - 这里的文档:
#!/bin/bash
while read line
do
left=${line:1:16} # Get left 16 chars
right=${line:17} # Get remainder of line
left=${left//n/m} # Do global replacement in left part
echo $left $right # Show output
done < file
原答案
当然,就在第 2-8 行
sed '2,8s/foo/bar/' file
或者,在开始和结束模式之间:
sed '/start/,/end/s/foo/bar/' file