是否可以用sed替换某个行位置范围内的/ n(例如空格)?
以下是没有范围过滤器的示例。是否可以在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”,结果是:
“我现在要打破免费” “ Amd friemds将成为朋友”
答案 0 :(得分:2)
再次编辑
尝试awk
:
awk '{l=substr($0,1,10);r=substr($0,11);gsub(/n/,"m",l);print l r}' file
其中l
是字符串的左侧部分,r
是右侧,gsub()
是全局替换。
<强>被修改强>
我可能会使用Bash参数替换 - 文档here:
#!/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