【问题标题】:BASH | get text between brackets重击 |获取括号之间的文本
【发布时间】:2015-01-21 09:48:56
【问题描述】:

你能帮我解决我从输入中获取数字的问题吗?

我输入了这样的内容:

Good [AA0060]    [LIB1:    61]        No   02/11/15 08:38:46

我想得到 LIB1 之后的号码:

61

问题是我也可以得到这样的输入:

Good [AA0060]  AA0060  [LIB1:    61]        No   02/11/15 08:38:46

更新:LIB1 应该是可变的。我希望它更有活力。

【问题讨论】:

    标签: string bash output


    【解决方案1】:

    你可以试试这个awk 命令

    awk  -FLIB1: '{print $2--}' FileName
    

    awk  -FLIB1: '{print $2+0}' FileName
    

    示例:

    echo "Good [AA0060]  AA0060  [LIB1:    61]        No   02/11/15 08:38:46" | awk  -FLIB1: '{print $2--}'
    

    输出:

    61
    

    【讨论】:

    • 首选:print $2+0,为方法+1
    【解决方案2】:

    试试这个sed 命令。

     sed 's/.*\[LIB1: \{0,\}\(.*\)\].*/\1/'  file_name 
    

    使用变量,

    考虑一下,

     match="LIB1"
    
     sed 's/.*\['$match': \{0,\}\(.*\)\].*/\1/' file_name
    

    【讨论】:

    • 如何获取变量而不是 LIB1?它应该更有活力。
    • @Karthikeyan.R.S,删除不需要的分组sed 's/.*\[LIB1: \{0,\}\(.*\)\].*/\1/' FileName
    【解决方案3】:

    使用这个perl 命令:

    perl -lne 'print $1 if(/LIB1:\s+(\d+)\]/)' file
    

    【讨论】:

    • perl 的输出还包含数字前的空字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2019-03-18
    • 2019-01-20
    相关资源
    最近更新 更多