我正在创建一个脚本来分析一些文件并提供必要的信息。我该如何使用grep作为猫
我在数组中设置了许多不同的变量,用于搜索文件中的不同方面。 例如日期,地点,类型。
但是我想让每个变量都是可选的,这就是我遇到问题的地方。
命令的语法本来简单 grep ${dates} filename | grep ${locations} | grep ${types}
但由于变量是可选的,上面不会有变量是否未设置工作。
我试图找到一种方式来获得grep来找到任何东西(即像egrep .* filename
) 这样,我可以设置变量以适当的正则表达式,并有命令仍然可以运行。
不幸的是,当我设置变量等于''时,它冻结,当我将它设置为'。'它只是从当前目录中的每个文件中删除所有内容,当我将变量留空时,它将文件名作为变量并等待文件名。
有无论如何,我可以设置一个变量,使grep $variable file
输出相同的猫会?
非常感谢提前!
你无需使用*扩展*正则表达式选项,只需'grep“$日期\ | $位置\ | $类型”文件名“是好的。(如果你需要扩展正则表达式,那么当然,使用它,但如果没有,基本的'grep'很好) –
OP描述使用shell管道'|',而不是逻辑*或* s。比较'seq 10 5 50 | grep -E'2 | 5'',(查找* 2 * OR * 5 *)到'seq 10 5 50 | grep'5'| grep'2',(查找* 2 *和* 5 *)。 – agc