如何用该字母替换多次出现的字母?

时间:2018-05-02 14:23:54

标签: awk sed grep expression

我有一个包含5列的文件,如下所示:

15642 G A.aa,, 0.77501 107
15643 G A.a,.A, 0.7570 17
15644 C t.TtTt,.T, 0.7501 10

我正在尝试将Aa和Tt的第3列转换为“A”或“T”。 输出:

15642 G A 0.77501 107
15643 G A 0.7570 17
15644 C T 0.7501 10

我尝试了各种awk方法但没有成功。我真诚地感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

关注awk可能对您有帮助。

awk '$3~/[Aa]/{$3="A"} $3~/[Tt]/{$3="T"} 1'   Input_file

答案 1 :(得分:1)

有很多可能性,包括:

$ awk '{sub(/\..*/,"",$3)} 1' file
15642 G A 0.77501 107
15643 G A 0.7570 17
15644 C t 0.7501 10

$ awk '{$3=substr($3,1,1)} 1' file
15642 G A 0.77501 107
15643 G A 0.7570 17
15644 C t 0.7501 10

$ awk '{$3=toupper(substr($3,1,1))} 1' file
15642 G A 0.77501 107
15643 G A 0.7570 17
15644 C T 0.7501 10

答案 2 :(得分:0)

这可能适合你(GNU sed):

sed -ri 's/(\S)\S*/\U\1/3' file

将第三个字段的第一个字符转换为大写。