我试图写一个正则表达式来获取以" A"开头的文件的每一行的最后一个字。并以" /"
结束grep '^A.*/$' list_svn.txt
这给整行:A Java/SYSTEM_A/Sources/branch/developerA/src/org/hl7/v3/
但我想要的只是" v3"字符串。
我试过awk但也没有成功。
grep '^A.*/$' list_svn.txt | awk -F '/' '{print $0, $(NF-1)}'
>> Java/SYSTEM_A/Sources/branch/developerA/src/org/hl7/v3/ v3
答案 0 :(得分:2)
您可以完全避免grep
使用您可以执行的awk:
awk -F/ '/^A.*\/$/ {print $(NF-1)}' list_svn.txt
v3
答案 1 :(得分:1)
使用GNU grep和look-arounds:
$ grep -Po '^A.*/\K[^/]*(?=/$)' <<< 'A Java/SYSTEM_A/Sources/branch/developerA/src/org/hl7/v3/'
v3
-P
启用Perl正则表达式(前瞻和后瞻所需),-o
仅返回匹配。
\K
充当可变长度的后视:“将所有内容匹配到此处但不包括在匹配中”。实际匹配是/
以外的字符序列,(?=/$)
位代表“后跟/
和行尾”(但也不包括在匹配中)