我怎么能用grep作为猫

时间:2017-05-25 04:26:04

标签: bash grep

我正在创建一个脚本来解析一些文件并获取必要的信息。

我在数组中设置了许多不同的变量来搜索文件中的不同方面。   例如日期,地点,类型。

但是我想让这些变量中的每一个都是可选的,这是我遇到问题的地方。

命令的语法很简单 grep ${dates} filename | grep ${locations} | grep ${types}

但是,由于变量是可选的,如果未设置变量,上述内容将无效。

我试图找到一种让grep找到任何东西的方法(例如像egrep .* filename) 这样我就可以将变量设置为正确的正则表达式并使命令仍然运行。

不幸的是,当我将变量设置为等于' '它冻结了,当我把它设置为' '它只是从当前目录中的每个文件中获取所有内容,当我将变量留空时,它将文件名作为变量并等待文件名。

无论如何,我可以设置一个变量,以便grep $variable file输出与cat相同的颜色吗?

非常感谢提前!

3 个答案:

答案 0 :(得分:1)

要让override func drawText(in rect: CGRect) { let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.alignment = .left paragraphStyle.lineBreakMode = .byWordWrapping let attrs = [NSFontAttributeName: UIFont.systemFont(ofSize: 12), NSParagraphStyleAttributeName: paragraphStyle, NSForegroundColorAttributeName: Utilities.COLOR_alarmText] (self.text! as NSString).draw(in: rect, withAttributes: attrs) } grep那样行动,请使用空字符串作为搜索模式,即cat。因此,为了使这些变量中的一些变量可选,但没有管道grep ""失败,只需引用变量:

grep

示范。搜索{250,255,260 ... 280}以获取数字 5 2 7

grep "${dates}" filename | grep "${locations}" | grep "${types}"

现在取消设置两个变量,它仍然有效:

x=5  y=2  z=7 ; seq 250 5 280 | grep "$x" | grep "$y" | grep "$z"
275

答案 1 :(得分:0)

如果文件名中没有任何$日期,则没有任何东西可以用于管道的其余部分。

我认为最好的方法是分别为每个字符串grep。

如果你得到一个匹配,那么grep下一个字符串。

答案 2 :(得分:-1)

您可以发布源文件和目标输出吗?从你的问题来看,你只需要将grep -E与|结合使用管道分隔符。

import 'signature_pad';

// ...
let canvas = document.querySelector("canvas");
this.signaturePad = new SignaturePad(canvas);

以上行应该自动为您提供任何模式的每次出现。这甚至都不是正则表达式。