用于执行以下程序的awk或shell脚本

时间:2013-03-07 10:41:33

标签: linux shell unix awk grep

mansa, amit, janani ,[rakesh]
aruna,mahesh,,prathiksha

这是我的意见。 我需要一个shell脚本或awk命令,它以下列方式提供输出

mansa
amit
janani 
rakesh
aruna
mahesh
prathiksha

脚本应该删除所有的括号。

我试过这个

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

但是每张唱片后都会打印一行。

3 个答案:

答案 0 :(得分:5)

grep更容易:

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

答案 1 :(得分:0)

另一个选项可能是tr

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

虽然如果有前导空格会创建空行,然后可以将其过滤掉:

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

答案 2 :(得分:0)

假设您只想删除方括号并从逗号分隔符中拆分项目,则可以使用以下内容:

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

我建议使用此方法的原因是,您的命名值中包含数字或您可能希望保留的其他非字母字符。

上面的perl表达式包含3个正则表达式。第一部分将多个逗号缩小为一个(以避免逗号之间的空值。第二部分删除方括号。第三部分通过用换行替换逗号(左侧或右侧的空白)来拆分值。

输出如下:

mansa
amit
janani
rakesh
aruna
mahesh
prathiksha