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

代码在这里:

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

结果:A) 一些词 B) 一些线 C) 一些数字

将结果打印在 1 行上。我想要 a 行的结果

喜欢:

A) somewords
B) somelines
C) somenumbers

我怎么能够?

谢谢

有帮助吗?

解决方案

只需引用你的 $result 变量和换行符将被保留:

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

这样做的原因是,当您在 bash 中将某些内容用双引号引起来时,这些引号内的所有内容都将被视为单个单词。这意味着它不会受到 分词. 。也可以看看: http://mywiki.wooledge.org/WordSplitting

使用时有效 $result, ,它会扩展到此(因为换行符被视为分隔符):

echo A) somewords B) somelines C) somenumbers

当你使用 "$result" 并避免分词,它被扩展为:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top