Linux

使用 sed,awk 提取部分文本

  • September 2, 2016

我有以下文字,如何提取列表

$$ 83472, 8327489 $$和 abcd: 32324 ?

[83472, 8327489]abcd: 32324Expr bla bla
[243fd]abcd: 4342Expr ieddsk
[2324, 34543, 8937423]abcd: 3232432423423Expr bla bla
sed -E 's/(\[[^]]*\]abcd:[[:blank:]]*[[:digit:]]*).*/\1/' file

應該這樣做。

樣本輸出

[83472, 8327489]abcd: 32324
[243fd]abcd: 4342
[2324, 34543, 8937423]abcd: 3232432423423

greppcre

1)提取最多但不包括Expr其餘行

$ grep -oP '.*(?=Expr)' file
[83472, 8327489]abcd: 32324
[243fd]abcd: 4342
[2324, 34543, 8937423]abcd: 3232432423423

2)提取[...]abcd: numbers

$ grep -oP '\[[^]]*\]abcd:\s*\d+' file
[83472, 8327489]abcd: 32324
[243fd]abcd: 4342
[2324, 34543, 8937423]abcd: 3232432423423

引用自:https://unix.stackexchange.com/questions/307306