尝试使用awk
解析文件,但没有获得所需的输出,我似乎无法弄明白。谢谢你:)。
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 +
当前output.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 +
从输出中删除 所需的output.txt (|pr=2|gc=75 0
和行间距)
chr1 955543 955763 AGRN-6 +
chr1 957571 957852 AGRN-7 +
chr1 970621 970740 AGRN-8 +
以下是我的尝试:
awk -F"[*|]" '{print $1, $2, $3, $4, $5, $6,}' input.txt > output.txt
答案 0 :(得分:3)
你可以这样做:
awk -F '[[:blank:]]+|\\|' '{print $1, $2, $3, $4, $NF}'
它会为您提供所需的字段,但不会保留间距。这将:
awk '{sub(/\|[^[:blank:]]+[[:blank:]]+[0-9]+/, ""); print }' <<END
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 +
END
chr1 955543 955763 AGRN-6 +
chr1 957571 957852 AGRN-7 +
chr1 970621 970740 AGRN-8 +
答案 1 :(得分:1)
可能是最简单的解决方案:
awk -F"|" '{print $1" +"}' input.txt > output.txt
然而,在这个解决方案中,尾随&#34; +&#34;手动添加。输出:
chr1 955543 955763 AGRN-6 +
chr1 957571 957852 AGRN-7 +
chr1 970621 970740 AGRN-8 +
否则,请尝试
awk -F"[| ]+" '{print $1, $2, $3, $4, $8}' input.txt > output.txt
输出
chr1 955543 955763 AGRN-6 +
chr1 957571 957852 AGRN-7 +
chr1 970621 970740 AGRN-8 +
答案 2 :(得分:1)
另一种选择(如果你不关心输出间距)
$ awk '{split($4,a,"|"); print $1,$2,$3,a[1],$NF}' file
chr1 955543 955763 AGRN-6 +
chr1 957571 957852 AGRN-7 +
chr1 970621 970740 AGRN-8 +