在一定的线路范围内,用sed替换线路馈线
是否可以用sed替换某一行位置范围内的/n(例如,用空格) 这是一个没有范围过滤器的示例。是否有可能在sed中设置一个范围在一定的线路范围内,用sed替换线路馈线,sed,Sed,是否可以用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”,结果是: “我想马上休息”
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将成为朋友”再次编辑 试试awk:
awk '{l=substr($0,1,10);r=substr($0,11);gsub(/n/,"m",l);print l r}' file
其中,l
是字符串的左侧部分,r
是右侧部分,gsub()
进行全局替换
已编辑
我可能会使用Bash参数替换它-文档:
或者,在开始和结束模式之间:
sed '/start/,/end/s/foo/bar/' file
你试过运行这个代码吗?我认为它不起作用。它只是一个显示上下文的片段。sed命令工作正常,但没有范围限制。对不起,我的问题有点不清楚:我不是指行的范围,而是一行内的范围。而且这与\n无关。它可以是任何角色。问题是:是否可以将范围限制在与sed一致的范围内!可能请用一两个例子来更新你的问题,说明你的意思,展示你的输入和输出数据。我上面的awk解决方案更简洁一些。有了这个解决方案,节目可以继续。。。必须继续;-)如果这个答案对你有用,请考虑接受它(点击投票计数旁边的空心滴答),这样我就可以得到一个可爱的大绿蜱。如果它不起作用,或者你仍然有问题,请说,我(希望其他人)会尝试进一步帮助你。谢谢
sed '2,8s/foo/bar/' file
sed '/start/,/end/s/foo/bar/' file