【问题标题】:Get the entire line from a file which contains a number and string从包含数字和字符串的文件中获取整行
【发布时间】:2015-09-09 09:10:35
【问题描述】:

我有一个变量设置为一个特定的数字,即 num=56 和一个充满数字和其他字符串的文件。我想同时匹配数字和一些字符串并获取包含它们的整行。

例如,

我想在一个充满类似行的文件中匹配这是我的号码:$num [mbits]

random text in front - this is my number: 56 [mbits]  
random text in front - this is my number: 21 [mbits]  
random text in front - this is my number: 15 [mbits]  
random text in front - this is my number: 38 [mbits]  
random text in front - this is my number: 49 [mbits]  
random text in front - this is my number: 10 [mbits]  
random text in front - this is my number: 89 [mbits]

我正在使用下面的命令,但是当我包含整个字符串时它不起作用。

grep -n "这是我的号码:$num [mbits]" info.log >> info1.log

文件仍然是空的。

它只能作为 grep -n "this is my number:" info.log >> info1.log 工作,我得到了上面的所有行。我只需要有具体数字的那个。

期望的输出应该是,

前面的随机文本 - 这是我的号码:56 [mbts]

有什么帮助吗?

提前谢谢你。

【问题讨论】:

    标签: string bash numbers match


    【解决方案1】:

    你需要使用grep -F(固定字符串匹配):

    num=56
    grep -F "this is my number: $num [mbits]" info.log
    

    否则:

    grep "this is my number: $num \[mbits\]" info.log
    

    因为[] 是特殊的正则表达式字符,需要转义。

    输出:

    random text in front - this is my number: 56 [mbits]
    

    【讨论】:

    • 感谢您这么快回复,它以某种方式工作,但我需要将 $num 视为变量。由于双引号导致出现问题...如何打印变量值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多