我有这个数据文件
[abc]
def
ghi
[jkl]
[mno]
从这个档案;我可以运行grep并轻松获取其中包含“[”的所有行。如何在“[]”中获取文本内容。
例如:
abc
jkl
mno
由于
答案 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