2015-07-28 4 views
1

Я пытаюсь разобрать результат ниже, используя 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 

Желаемая result.txt

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

ответ

2

Что плохого просто делает

awk -F ';' '{ print $1 }' 

? Кажется намного проще.

+0

Или аналогично 'sed s /;.*// 'file1.txt> result.txt' – tripleee

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 указывает, какие поля вы хотите напечатать.

+0

Благодарим вас за помощь и за то, что вы познакомили меня с« cut »:). – Chris

+0

Добро пожаловать;) Заметьте, что вы можете принять один ответ, но вверх/вниз все они (я говорю это, потому что я [см.] (Http://stackoverflow.com/posts/31678776/timeline) вы приняли один, а затем другой , просто не стесняйтесь поднимать/понижать все, что захотите). – fedorqui

Смежные вопросы