如果字段以左括号开头,则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)