使用 sed 从行中删除第三个字符

使用 sed 从行中删除第三个字符

@如果字符串中存在第一个字符,则以下 sed 语法将删除该字符:

 sed 's/^@\(.*\)/\1/'

但如何改变它来删除@字符只有当它是在第三位置?例如,我需要在以下行中删除它:

 AB@CDEF

我需要脚本来验证第三个字符是否是@,如果是则将其从行中删除。

答案1

您可以使用

sed 's/^\(..\)@\(.*\)/\1\2/'

答案2

概括任意给定位置的任意字符n

sed 's/^\(.\{2\}\)./\1/'

删除第三个字符。只需将数字“2”更改为n-1

您可以像这样使用变量:

n=2
echo "$line" | sed "s/^\(.\{${n}\}\)./\1/"

答案3

% sed -e '/^..@/ { s,^\(..\)@,\1, }'

方法:

  • 如果行以 3 个字符开头,则第三个字符为 '@'
  • 删除@,但保留第一个字符

相关内容