![更改一行中的第三个字符](https://linux22.com/image/137814/%E6%9B%B4%E6%94%B9%E4%B8%80%E8%A1%8C%E4%B8%AD%E7%9A%84%E7%AC%AC%E4%B8%89%E4%B8%AA%E5%AD%97%E7%AC%A6.png)
输入:
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