使用grep提取值

时间:2010-11-01 10:54:40

标签: linux bash unix shell grep

示例字符串:a.txt

Reading:RG1:+ /user/reading/Monday:12
Reading:RG1:- /user/**/Friday:12
Reading:RG1:- /user/**/*.txt:12
Reading:RG1:- /user/tet/**/*.txt:12

我希望提取字符串

after + or - what ever the string i want it 

使用:

cat a.txt | grep RG1|grep '+'| cut -d':' -f3| cut -d'+' -f2 |sed -e 's/ //

我到了 /用户/读取/星期一

但我正在观看

/用户/读取/星期一:12

3 个答案:

答案 0 :(得分:3)

使用egrep -o

$ egrep -o '/user/reading/[A-Z][a-z]+day:[0-9]+' a.txt
/user/reading/Monday:12
/user/reading/Friday:12

修改:对于您的新示例,请使用类似

的内容
$ egrep -o '/user/[^ ]*:[0-9]+' a.txt
/user/reading/Monday:12
/user/**/Friday:12
/user/**/*.txt:12
/user/tet/**/*.txt:12

假设路径中没有空格。

答案 1 :(得分:1)

要修复命令,请使用-f3-,因为您需要从第3个字段到行尾的所有内容。

cat a.txt | grep RG1|grep '+'| cut -d':' -f3-| cut -d'+' -f2 |sed -e 's/ //'

答案 2 :(得分:1)

$ grep -Po '(?<=[-+] ).*' a.txt
/user/reading/Monday:12
/user/**/Friday:12
/user/**/*.txt:12
/user/tet/**/*.txt:12

使用方括号更改字符以更改您选择的行。