AWK / SED удалить столбцы, содержащие круглые скобки - PullRequest
1 голос
/ 16 октября 2010

Мне было интересно, можно ли будет удалить столбцы в файле данных, которые содержат любые круглые скобки, которые могут содержаться в ЛЮБОМ столбце.Например,

...
John Doe (Tech Department) 09/12/2009 555-555-5555
Jane Smith 09/12/2009 555-555-5555 (Suspended)
Alfred doe 555-555-5555 (Vacation) 09/09/2011
...

Итак, я хотел бы, чтобы вывод выглядел как

...
John Do 09/12/2009 555-555-5555
Jane Smith 09/12/2009 555-555-5555
Alfred doe 555-555-5555 09/09/2011
...

Я думал об использовании подстановочного знака для текста между скобками?что-то вроде / (*) /?

Спасибо за любую помощь,

Томек

Ответы [ 3 ]

2 голосов
/ 16 октября 2010
$ cat file
John Doe (Tech Department) 09/12/2009 (somethign else) 555-555-5555
Jane Smith 09/12/2009 555-555-5555 (Suspended)
Alfred doe 555-555-5555 (Vacation) 09/09/2011

$ awk -vRS=")" -F"(" '{ for(i=1;i<=NF;i+=2) {print $i}}' ORS="" file
John Doe  09/12/2009  555-555-5555
Jane Smith 09/12/2009 555-555-5555
Alfred doe 555-555-5555  09/09/2011

$ sed -r 's/\(.[^)]*\)//g' file
John Doe  09/12/2009  555-555-5555
Jane Smith 09/12/2009 555-555-5555
Alfred doe 555-555-5555  09/09/2011

$ awk '{gsub(/\(.[^)]*\)/,"") }1' file
John Doe  09/12/2009  555-555-5555
Jane Smith 09/12/2009 555-555-5555
Alfred doe 555-555-5555  09/09/2011
1 голос
/ 16 октября 2010

Если с Perl все в порядке, вы можете сделать:

$ cat file
John Doe (Tech Department) 09/12/2009 555-555-5555
Jane Smith 09/12/2009 555-555-5555 (Suspended)
Alfred doe 555-555-5555 (Vacation) 09/09/2011

$ perl -pe 's/\(.*?\)//g' file    
John Doe  09/12/2009 555-555-5555
Jane Smith 09/12/2009 555-555-5555 
Alfred doe 555-555-5555  09/09/2011
0 голосов
/ 13 ноября 2012

Простейшая команда в одну строку sed:

$ sed -e '/[()]/d' file    
John Doe  09/12/2009  555-555-5555
Jane Smith 09/12/2009 555-555-5555
Alfred doe 555-555-5555  09/09/2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...