【问题标题】:How to modify grep output: get each result in each line如何修改 grep 输出:获取每行中的每个结果
【发布时间】:2014-05-25 13:48:25
【问题描述】:

我正在使用 grep 通过 var 中包含的文件搜索模式

代码在这里:

result=`grep "$pattern" $file`
echo $result

结果: A) somewords B)somelines C)somenumbers

在 1 行上打印结果。我想为第 a 行提供一个结果

喜欢:

A) somewords
B) somelines
C) somenumbers

我该怎么办?

谢谢

【问题讨论】:

    标签: bash grep output


    【解决方案1】:

    只需引用您的 $result 变量,换行符就会被保留:

    result=$(grep "$pattern" $file)
    echo "$result"
    

    这样做的原因是,当您在 bash 中用双引号将某些内容括起来时,这些引号内的所有内容都被视为一个单词。这意味着它将不受word splitting 的约束。另见:http://mywiki.wooledge.org/WordSplitting

    当您使用$result 时,它实际上会扩展为这个(因为换行符被视为分隔符):

    echo A) somewords B) somelines C) somenumbers
    

    当您使用"$result" 并避免分词时,它会扩展为:

    echo "A) somewords
    B) somelines
    C) somenumbers"
    

    附加说明:使用$(...) 代替反引号提高了可读性并且更便携。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2015-07-01
    • 2014-03-10
    • 1970-01-01
    相关资源
    最近更新 更多