我需要提取第3列等于38
的行。
我正在尝试以下命令:
awk '{printf "$3=38"}' file
示例文件内容:
TRINITY_DN66807_c0_g1_i1 4 * 0 0 * * 0 0 TTTAAGAAAATTACAGCCTGAACTAGATGAATTGCAAAAACTCATAGGCAAAAAGGAAGAAGAAATTGGATACGT *
TRINITY_DN66871_c0_g1_i1 4 * 0 0 * * 0 0 AAGAGGACATAGAAACTGTGATGATAATAGTATTGCTCTACTATTTCCTATAGCTCAGTTATTCAGCTGTCAGTC *
TRINITY_DN66847_c0_g1_i1 0 38 2520299 37 274M * 0 0 CTCTCCTAGGATGCAGGATGGCCTCTTGCCACCTACACCCTTCTTCATGGGTTCGGCCCTTGGTCAACTAAAGGA * XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:274
TRINITY_DN66836_c0_g1_i1 0 38 21725268 37 733M * 0 0 TAGATGATGAAACTGGGTTGACCCTTGTTCCTAAGACTCAGTCCAGAGAGTCCTGGACTTTGCACTTTGGTTAGATGCCCCTGCCCCTCCCGCCAGCGCTGAGGAGGAATCACGCAGGCCTGAACAGAACATTCAGGTGATCCTATGAAG * XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:733
答案 0 :(得分:1)
使用{printf "$3=38"}'
时,告诉awk在找到一行时打印文字$3=38
。您需要使用 condition ,即大括号之外的表达式。
使用
awk '$3 ~ /^38$/' file
请参见demo online。 $3 ~ /^38$/
是一个正则表达式匹配检查,针对与匹配等于^38$
的整个字符串的38
正则表达式测试字段3的值。
或者,使用简单的字符串相等性比较(因为38
是静态文本):
awk '$3 == "38"' file