更改一行中的第三个字符

更改一行中的第三个字符

输入:

dummy - 22847847
sha - 84734747
DHS - 374874

预期输出:

du1my - 22847847
sh1 - 84734747
DH1 - 374874

答案1

$ cat test.txt
dummy - 22847847
sha - 84734747
DHS - 374874

$ awk '{$3=1}1' FS="" OFS="" test.txt
du1my - 22847847
sh1 - 84734747
DH1 - 374874

答案2

sed

sed 's/^\(..\)./\11/' infile > expected_result

称为(..)组匹配,它捕获前两个字符,并且\1是其反向引用。正.则表达式中的点匹配任何单个字符。

如果不是第 3而是第 N,您可以按照以下步骤将第 3字符更改为1

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

或者就像下面指出的那样@steeldriver:

sed 's/./1/3' infile

相关内容