在一定范围内的行中将换行替换为 SED

  • 本文关键字:换行 替换 SED 范围内 sed
  • 更新时间 :
  • 英文 :


是否可以将行位置一定范围内的/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

最新更新