@
如果字符串中存在第一个字符,则以下 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 个字符开头,则第三个字符为 '@'
- 删除@,但保留第一个字符