1
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}}'

但它在每条记录后多打印一行。

4

3 回答 3

5

更容易grep

$ grep -o '[a-z]\+' file
mansa
amit
janani
rakesh
aruna
mahesh
prathiksha
于 2013-03-07T10:47:15.060 回答
0

另一种选择可能是tr

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

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

tr -cs '[:alpha:]' '[\n*]' < file | awk NF
于 2013-03-07T11:25:42.827 回答
0

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

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

我推荐这种方法的原因是如果您的命名值中有数字或您可能想要保留的其他非字母字符。

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

输出如下:

mansa
amit
janani
rakesh
aruna
mahesh
prathiksha
于 2013-03-07T12:12:10.947 回答