awk或grep问题

时间:2011-02-18 07:37:01

标签: awk grep

我有这个数据文件

[abc]
def
ghi
[jkl]
[mno]

从这个档案;我可以运行grep并轻松获取其中包含“[”的所有行。如何在“[]”中获取文本内容。

例如:

abc
jkl
mno

由于

4 个答案:

答案 0 :(得分:3)

尝试一下:

sed -n 's/\[\([^]]*\)\]/\1/p'

awk -F "[][]" '$2 != "" {print $2}'

grep -Po '(?<=\[)[^]]*(?=])'

答案 1 :(得分:2)

sed -n 's/\[\(.*\)\]/\1/p' file

说明:-n禁止将每行打印到STDOUT,但正则表达式末尾的/p重新启用此行为,从而导致打印所有匹配的行。正则表达式本身匹配括号之间的所有内容,并用它替换整行。

答案 2 :(得分:0)

grep“\ [”| sed -e's / \ [//'-e's / \] //'

答案 3 :(得分:0)

这是你如何用awk

做到的
$ cat file
[abc]
def [ xxx]
ghi
[jkl]
[mno]
[zz
zzzz]


$ awk 'BEGIN{RS="]";FS="["}/\[/{print $NF }' file
abc
 xxx
jkl
mno
zz
zzzz

红宝石(1.9 +)

 ruby -0777 -ne 'puts $_.scan(/\[(.*?)\]/m)' file

或者你可以只使用shell

$ var=$(<file)
$ IFS="]"
$ set -- $var
$ for i in $@; do echo ${i##*[}; done