2013-03-07 3 views
1
mansa, amit, janani ,[rakesh] 
aruna,mahesh,,prathiksha 

Это мой ввод. мне нужен скрипт или команду AWK, что дает мне выход в следующем порядкеAwk или сценарий оболочки для выполнения следующей программы

mansa 
amit 
janani 
rakesh 
aruna 
mahesh 
prathiksha 

скрипт должен удалить все, 's скобки.

Я попробовал этот

awk -F "\[\][,]+" '{for(i=1;i<=NF;i++){print $i}}' 

, но его печать одну дополнительную строку после каждой записи.

ответ

5

Легче с grep:

$ grep -o '[a-z]\+' file 
mansa 
amit 
janani 
rakesh 
aruna 
mahesh 
prathiksha 
+0

Было бы также хорошо 'Grep -о«[аз] \ *»file' – fedorqui

+0

@fedorqui кванторе' + 'является частью расширенного класса регулярных выражений, так что я должен быть экранированы * (или используйте параметр '-E', или' egrep') * однако '*' является стандартным регулярным выражением, поэтому не требуется экранирование, поэтому вам нужно будет выполнить 'grep '[az] *' file' различия '+ 'означает один или несколько, в то время как' * 'означает ноль или более, оба дают одинаковые результаты в этом случае, но' * 'и '+', безусловно, не взаимозаменяемы. –

+0

Умм, интересно. Спасибо, @sudo_O! – fedorqui

0

Другой вариант может быть tr:

tr -cs '[:alpha:]' '[\n*]' < file 

Хотя было бы создать пустые строки, если есть ведущие пробелы, которые затем могут быть отфильтрованы:

tr -cs '[:alpha:]' '[\n*]' < file | awk NF 
0

Предполагая, что вы только хотите, чтобы удалить квадратные скобки и разделить элементы внутри запятой разделителей, вы можете использовать следующее:

perl -pe 's/,+/,/g ; s/[\[\]]//g ; s/\s*,\s*/\n/g' foo.txt 

Причину, почему я рекомендую этот подход в том случае, если ваши названные значения имеют номера в них или другие не-альфа-символы, которые вы можете сохранить.

В выражении perl содержится 3 регулярных выражения. Первая часть уменьшает количество запятых в одну (чтобы избежать пустых значений между запятыми, вторая часть удаляет квадратные скобки. Третья часть разделяет значения, заменяя запятые (пробелами слева или справа) на символы новой строки.

Выход будет следующим образом:

mansa 
amit 
janani 
rakesh 
aruna 
mahesh 
prathiksha 
Смежные вопросы