我有這樣的數據文件在awk或者grep的問題
[abc]
def
ghi
[jkl]
[mno]
從該文件;我可以運行grep並輕鬆獲取所有內含「[」的行。我怎樣才能得到「[]」內的文字內容。
例如:
abc
jkl
mno
由於
我有這樣的數據文件在awk或者grep的問題
[abc]
def
ghi
[jkl]
[mno]
從該文件;我可以運行grep並輕鬆獲取所有內含「[」的行。我怎樣才能得到「[]」內的文字內容。
例如:
abc
jkl
mno
由於
sed -n 's/\[\(.*\)\]/\1/p' file
說明:-n禁止將每行打印到STDOUT,但/p
在正則表達式的末尾重新啓用此行爲,導致打印所有匹配行。正則表達式本身匹配括號內的所有內容,並用它替換整個行。
grep的 「\ [」 | SED -e 'S/\ [//' -e 'S/\] //'
這給嘗試:
sed -n 's/\[\([^]]*\)\]/\1/p'
或
awk -F "[][]" '$2 != "" {print $2}'
或
grep -Po '(?<=\[)[^]]*(?=])'
如果數據與我在回答中顯示的一樣,那麼`sed`解決方案可能需要增強。 – kurumi 2011-02-18 08:06:06
這裏是你如何可以使用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
做,或者你可以只用貝殼做
$ var=$(<file)
$ IFS="]"
$ set -- $var
$ for i in [email protected]; do echo ${i##*[}; done
我得到錯誤 sed:-e表達式#1,字符5:未終止的's'命令 – shergill 2011-02-18 07:47:27
我已經測試過使用cygwin,它的工作原理。看看backslahs。 – Luixv 2011-02-18 07:54:23