从文本文件中获取特定的字符串

时间:2018-12-05 11:38:33

标签: linux awk sed grep

我需要从文本文件中获取特定的字符串。我文件的内容如下:

Components at each of the following levels must be
built before components at higher-numbered levels.

1.  SACHHYA-opkg-utils                        master@964c29cc453ccd3d1b28fb40bae8df11c0dc3b3c
    SACHHYA-web-SABARMATI-ap-page               master@3bdc2dc1e5cee745cfced370201352045cd57195
    SACHHYA-web-update-page                   master@24b0ffaad4d130ae5a2df0e470868846c7888392
    SACHHYAWebMonaco                          Release/MR1_2019/3.0.7-570+36a238d
    googletest-qc8017_32                   branches/googletest@2692
    LpmMfgTool                             Release/master/0.0.1-4+34833d6
    opensource-avahi-qc8017_32             Release/SACHHYA-master/v1.0-4-gb70507e
    opensource-OpenAvnuApple-qc8017_32     Release/SACHHYA-master/v1.0-1766-g1098033
    opensource-opkg-qc8017_32              Release/SACHHYA-dev/v0.3.6.2-2-gb1e1aba
    opensource-unzip-qc8017_32             Release/master/v6.0.0
    opensource-util-linux-qc8017_32        Release/SACHHYA-master/1.5.0-10+877ade5
    opensource-zip-qc8017_32               Release/master/v3.0.0
    product-startup                        Release/master/4.0.0-5+5179185
    ProductControllerCommon                master@a1e71509aaaa9cf7a9e70d4e9c7bfc80d76e13a2
    ProductUIAssets                        master@220944def647a72ce0194d43ef23f1d3fe146987
    proprietary-airplay2-qc8017_32         Release/SACHHYA-master/2.0.2-15-g88c1c1d
    SABARMATI-HSP-Images                     Release/master/4.4
    SABARMATI-Toolchain                      Release/master/4.4
    SABRMATILPM                             trunk@3408
    SABARMATILpmTools                        @3604
    SABARMATILpmUpdater                      Release/master/1.0.0-69+a38d6c8

我正在尝试的命令是:

awk /SACHHYAWebMonaco/ MyFile.txt

使用此命令,我可以获取其中存在我的字符串的那一行。这是awk命令的结果:

SACHHYAWebMonaco                          Release/MR1_2019/3.0.7-570+36a238d

我要grep的只是该行中的“ 3.0.7”(即版本)。

有人可以建议这样做吗?

2 个答案:

答案 0 :(得分:2)

您可以使用/-作为字段分隔符并打印第三个字段。

这假定您要查找的信息的行格式和位置始终都是这样。

$ awk -F[/-] '/SACHHYAWebMonaco/ {print $3}' file
3.0.7

答案 1 :(得分:1)

Perl解决方案

$ perl -F"[/-]" -lane ' print "$F[2]" if /SACHHYAWebMonaco/ ' sachhya.txt
3.0.7