我想将 for 循环中的 grep 的结果写入文件,保持原始文件结构。原始文件:
$cat newtest1
some_text
/homes/myself/joz
ivan petrov - 20/10/19
new customer:
/homes/myself/silvia
john smith - 30/11/19
old customer:
some_text
我在 for 循环中使用 grep 并获得以下信息:
$for i in `cat newtest1 | grep customer -B2`; do echo $i; done
/homes/myself/joz
ivan
petrov
-
等文件的结构发生了变化。我尝试了 printf - 结果相同。问题:如何在 for 循环中使用 grep 保持文件的结构?
您需要引用变量和命令替换的结果以防止分词:
当然只输出匹配的行你不需要
for
循环,但我想你想用这些行做其他事情。在任何情况下,您都不需要cat
,您可以grep
使用打开文件grep … newtest1
或让 shell 打开它并将其内容分配给grep
's stdin,就像我在上面所做的那样。后者在这个很好的答案中解释了许多优点:我什么时候应该使用输入重定向?