我有awk
似乎很直白,但我似乎遇到了问题。如果$5
以(
开头,则在下面的文件中,然后在该字符串中添加)
。但是if
$ 5 does not start with a
(then nothing is done. The out is separated by a tab. The
awk is almost right but I am not sure how to add the condition to only add a
)if the field starts with a
(`。谢谢:)。
文件
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)
所需的输出(第1行和第2行没有任何操作,但第3行和第4行添加了)
)
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)
答案 0 :(得分:2)
new_env <- environment()
new_env$number <- 5
new_env$number
get("number", envir = new_env)
assign("n", 1:10, envir = new_env)
new_env$n
检查第5个字段的第一个字符。如果$ 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)
在末尾附加(
,则附加空字符串。
通过在所有情况下附加某些东西(其中一个东西是“没有”:),我们强制awk用定义的(制表符)输出分隔符重新构建记录,这使我们不必打印单个字段。尾随)
充当始终为真的模式,其默认操作只是打印重构的行。