使用awk删除分号后的所有文本

时间:2015-07-28 14:08:25

标签: awk

我正在尝试使用awk解析下面的输出,以删除每行中的分号后面的所有文本。谢谢你:)。

awk -F '\t' 'BEGIN { OFS = FS } NR != 1 { sub(/; [^ ]*$/, "", $NF) } 1' file1.txt >: result.txt

FILE1.TXT

chr1 40539722 40539865 PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1 
chr1 40542503 40542595 PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1 
chr1 40544221 40544340 PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1 
chr1 40546058 40546169 PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1;PPT1

Desired result.txt

chr1 40539722 40539865 PPT1
chr1 40542503 40542595 PPT1
chr1 40544221 40544340 PPT1
chr1 40546058 40546169 PPT1

2 个答案:

答案 0 :(得分:2)

只是做

有什么不对
awk -F ';' '{ print $1 }'

?似乎更简单。

答案 1 :(得分:1)

您希望cut该文件并显示;上的第一个字段 - 分隔值。那么使用cut本身呢?

$ cut -d';' -f1 file
chr1 40539722 40539865 PPT1
chr1 40542503 40542595 PPT1
chr1 40544221 40544340 PPT1
chr1 40546058 40546169 PPT1

-d设置分隔符,-f表示您要打印的字段。