示例字符串: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
答案 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
使用方括号更改字符以更改您选择的行。