题
我正在使用 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"
附加说明:使用 $(...)
而不是反引号提高了可读性并且也更便携。
不隶属于 StackOverflow