我想解析输入awk
以包括|gc= in $4
,但我不能。以下为收盘:awk解析字段,并包含1管道的文本
awk
至今:
awk '{sub(/\|[^[:blank:]]+[[:blank:]]+[0-9]+/, ""); print }' input.txt
输入
chr1 955543 955763 AGRN-6|pr=2|gc=75 0 +
chr1 957571 957852 AGRN-7|pr=3|gc=61.2 0 +
chr1 970621 970740 AGRN-8|pr=1|gc=57.1 0 +
电流输出
chr1 955543 955763 AGRN-6 +
chr1 957571 957852 AGRN-7 +
chr1 970621 970740 AGRN-8 +
所需的输出(每个字段由制表符分隔)
chr1 955543 955763 AGRN-6|gc=75 +
chr1 957571 957852 AGRN-7|gc=61.2 +
chr1 970621 970740 AGRN-8|gc=57.1 +
编辑
gawk '{gensub(/\|[^[:blank:]]+[[:blank:]]+[0-9]+[\]+/, ""); print }' input.txt > output.txt
gawk: cmd. line:1: {gensub(/\|[^[:blank:]]+[[:blank:]]+[0-9]+[\]+/, ""); print }
gawk: cmd. line:1: ^unterminated regexp
gawk: cmd. line:1: error: Unmatched [ or [^: /\|[^[:blank:]]+[[:blank:]]+[0-9]+[\]+/, ""); print }/
也试过此awk
,但这只是打印原始输入:
awk '{sub(/\|[^[:blank:]]+[[:blank:]]+[0-9]+[[|blank|]]+/, ""); print }' input.txt > output.txt
它看起来像你的输入数据制表符分隔。那是对的吗?你想要制表符分隔的输出吗?阅读关于'split()'函数。祝你好运 – shellter
你有GNU awk吗?如果是这样,gensub()是你想要的,而不是sub()。 –
我会阅读关于拆分,并有GNU'awk',但不熟悉'gensub()'。谢谢 :)。 – Chris