如果字段以左括号开头,则awk将添加右括号

如果字段以左括号开头,则awk将添加右括号,awk,Awk,我有一个awk,看起来很直截了当,但我似乎遇到了问题。在下面的文件中,如果$5以开头(),则在该字符串的末尾添加一个)。但是,如果$5不是以开头(则什么也不做。out由一个选项卡分隔。awk几乎是正确的,但是我不确定如何添加条件以仅添加一个)如果字段以开头(`。谢谢:) 文件 chr7 100490775 100491863 chr7:100490775-100491863 ACHE chr7 100488568 100488719 chr7:100488568-100488719 ACHE;D

我有一个
awk
,看起来很直截了当,但我似乎遇到了问题。在下面的文件中,如果
$5
开头(
),则在该字符串的末尾添加一个
。但是,
如果
$5
不是以
开头(
则什么也不做。out由一个选项卡分隔。
awk
几乎是正确的,但是我不确定如何添加条件以仅添加一个
如果字段以
开头(`。谢谢:)

文件

chr7 100490775 100491863 chr7:100490775-100491863 ACHE
chr7 100488568 100488719 chr7:100488568-100488719 ACHE;DJ051769
chr1 159174749 159174770 chr1:159174749-159174770 (ACKR1
chr1 159175223 159176240 chr1:159175223-159176240 (ACKR1
awk已尝试

awk -v OFS='\t' '{print $1,$2,$3,$4,""$5")"}' file
电流输出

chr7    100490775   100491863   chr7:100490775-100491863    ACHE)
chr7    100488568   100488719   chr7:100488568-100488719    ACHE;DJ051769)
chr1    159174749   159174770   chr1:159174749-159174770    (ACKR1)
chr1    159175223   159176240   chr1:159175223-159176240    (ACKR1)
chr7    100490775   100491863   chr7:100490775-100491863    ACHE
chr7    100488568   100488719   chr7:100488568-100488719    ACHE;DJ051769
chr1    159174749   159174770   chr1:159174749-159174770    (ACKR1)
chr1    159175223   159176240   chr1:159175223-159176240    (ACKR1)
所需输出(第1行和第2行除了第3行和第4行添加了一个

检查第5个字段的第一个字符。如果是
在末尾追加一个
,否则追加空字符串

在所有情况下,通过添加某物(其中一个某物为“nothing”):我们强制awk使用定义的(制表符)输出分隔符重新组合记录,这样我们就不必打印单个字段。尾随的
1
充当始终为真的模式,其默认操作只是打印重建的行

检查第5个字段的第一个字符。如果是
在末尾追加一个
,否则追加空字符串


在所有情况下,通过添加某物(其中一个某物为“nothing”):我们强制awk使用定义的(制表符)输出分隔符重新组合记录,这样我们就不必打印单个字段。尾随的
1
作为一个始终为真的模式,其默认操作只是打印重建的行。

非常感谢您的帮助和解释:)。非常感谢您的帮助和解释:)。
$ awk -v OFS='\t' '{p = substr($5,1,1)=="(" ? ")" : ""; $5=$5 p}1' mp.txt
chr7    100490775   100491863   chr7:100490775-100491863    ACHE
chr7    100488568   100488719   chr7:100488568-100488719    ACHE;DJ051769
chr1    159174749   159174770   chr1:159174749-159174770    (ACKR1)
chr1    159175223   159176240   chr1:159175223-159176240    (ACKR1)