我正在 tcsh 中编写一个简单的脚本(显然这是一个坏主意,但很好)从文本文件中 grep 一些模式。假设我们有一个文件animal_names.txt
,其中包括:
dog carrot
dog bolt
cat larry
cat brownies
bird parry
bird pirate
我写了脚本:
set animals = "dog\|cat"
set names = `grep $animals animal_names.txt`
echo "$names"
目的是用“狗”或“猫”对所有行进行 grep。但是,我得到的输出只是单行:
dog carrot dog bolt cat larry cat brownies
不知何故,换行符在输出中被删除了。有没有办法保留换行符?另一篇文章建议使用 :q 修饰符,但在我的情况下不起作用。
“我得到的输出只有一行”-不幸的是,您刚刚遇到了脚本输入有问题的原因之一
[t]csh
。保留换行符要么是不可能的,要么是不重要的。请改用bash
(或sh
)。假设这是写入文件
find_animals
:请注意,我没有转义 RE
|
符号,而是告诉grep
我使用扩展正则表达式 (ERE)。您可以按照原件保留它,但我认为这样更容易阅读。使脚本可执行
animal_names.txt
在可以找到文件的目录中运行它输出
如果你坚持使用
tcsh
它会起作用:参考