意外的 awk 解析
Unexpected awk parsing
我有一个 fastq 文件,其读取格式如下:
@SRR1463109.1 HWI-ST740_1:1:1101:1222:2116/1
AAACTAAAATTTTAAAGCATCTGACTGTACTCATGGTGGGTACACGTGACTAGAAATCTATCACACTAACATGAGGGTCAGCTCCACGCTCTGTGACTTCT
+
HHHHHFHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHCEHHDDDDBFGGGBGHHHHFHHHHHF;EF?FDCD?GGCGGFFGFGHHEGHGGFFGEEDHHG
我需要删除@xxxx 单词后的space,使其看起来像
@SRR1463109.1_HWI-ST740_1:1:1101:1222:2116/1
AAACTAAAATTTTAAAGCATCTGACTGTACTCATGGTGGGTACACGTGACTAGAAATCTATCACACTAACATGAGGGTCAGCTCCACGCTCTGTGACTTCT
+
HHHHHFHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHCEHHDDDDBFGGGBGHHHHFHHHHHF;EF?FDCD?GGCGGFFGFGHHEGHGGFFGEEDHHG
我是 awk 的新手,但到目前为止我已经掌握了
awk '{ gsub("^@([a-z]|[A-Z])*", "_", ); =""; print }' test.fastq
结果是
@SRR1463109.1_HWI-ST740_1:1:1101:1222:2116/11463109.1
AAACTAAAATTTTAAAGCATCTGACTGTACTCATGGTGGGTACACGTGACTAGAAATCTATCACACTAACATGAGGGTCAGCTCCACGCTCTGTGACTTCT
+
HHHHHFHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHCEHHDDDDBFGGGBGHHHHFHHHHHF;EF?FDCD?GGCGGFFGFGHHEGHGGFFGEEDHHG
该行的最后一部分被破坏了,可能是因为文本中的“/1”。我该如何解决这个问题?
使用 sed 进行简单替换。
$ sed 's/^\(@[^[:blank:]]*\)[[:blank:]]\+/_/' file
@SRR1463109.1_HWI-ST740_1:1:1101:1222:2116/1
AAACTAAAATTTTAAAGCATCTGACTGTACTCATGGTGGGTACACGTGACTAGAAATCTATCACACTAACATGAGGGTCAGCTCCACGCTCTGTGACTTCT
+
HHHHHFHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHCEHHDDDDBFGGGBGHHHHFHHHHHF;EF?FDCD?GGCGGFFGFGHHEGHGGFFGEEDHH
我有一个 fastq 文件,其读取格式如下:
@SRR1463109.1 HWI-ST740_1:1:1101:1222:2116/1
AAACTAAAATTTTAAAGCATCTGACTGTACTCATGGTGGGTACACGTGACTAGAAATCTATCACACTAACATGAGGGTCAGCTCCACGCTCTGTGACTTCT
+
HHHHHFHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHCEHHDDDDBFGGGBGHHHHFHHHHHF;EF?FDCD?GGCGGFFGFGHHEGHGGFFGEEDHHG
我需要删除@xxxx 单词后的space,使其看起来像
@SRR1463109.1_HWI-ST740_1:1:1101:1222:2116/1
AAACTAAAATTTTAAAGCATCTGACTGTACTCATGGTGGGTACACGTGACTAGAAATCTATCACACTAACATGAGGGTCAGCTCCACGCTCTGTGACTTCT
+
HHHHHFHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHCEHHDDDDBFGGGBGHHHHFHHHHHF;EF?FDCD?GGCGGFFGFGHHEGHGGFFGEEDHHG
我是 awk 的新手,但到目前为止我已经掌握了
awk '{ gsub("^@([a-z]|[A-Z])*", "_", ); =""; print }' test.fastq
结果是
@SRR1463109.1_HWI-ST740_1:1:1101:1222:2116/11463109.1
AAACTAAAATTTTAAAGCATCTGACTGTACTCATGGTGGGTACACGTGACTAGAAATCTATCACACTAACATGAGGGTCAGCTCCACGCTCTGTGACTTCT
+
HHHHHFHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHCEHHDDDDBFGGGBGHHHHFHHHHHF;EF?FDCD?GGCGGFFGFGHHEGHGGFFGEEDHHG
该行的最后一部分被破坏了,可能是因为文本中的“/1”。我该如何解决这个问题?
使用 sed 进行简单替换。
$ sed 's/^\(@[^[:blank:]]*\)[[:blank:]]\+/_/' file
@SRR1463109.1_HWI-ST740_1:1:1101:1222:2116/1
AAACTAAAATTTTAAAGCATCTGACTGTACTCATGGTGGGTACACGTGACTAGAAATCTATCACACTAACATGAGGGTCAGCTCCACGCTCTGTGACTTCT
+
HHHHHFHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHCEHHDDDDBFGGGBGHHHHFHHHHHF;EF?FDCD?GGCGGFFGFGHHEGHGGFFGEEDHH