我正在创建一个脚本来解析一些文件并获取必要的信息。
我在数组中设置了许多不同的变量来搜索文件中的不同方面。 例如日期,地点,类型。
但是我想让这些变量中的每一个都是可选的,这是我遇到问题的地方。
命令的语法很简单
grep ${dates} filename | grep ${locations} | grep ${types}
但是,由于变量是可选的,如果未设置变量,上述内容将无效。
我试图找到一种让grep找到任何东西的方法(例如像egrep .* filename
)
这样我就可以将变量设置为正确的正则表达式并使命令仍然运行。
不幸的是,当我将变量设置为等于' '它冻结了,当我把它设置为' '它只是从当前目录中的每个文件中获取所有内容,当我将变量留空时,它将文件名作为变量并等待文件名。
无论如何,我可以设置一个变量,以便grep $variable file
输出与cat相同的颜色吗?
非常感谢提前!
答案 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);
以上行应该自动为您提供任何模式的每次出现。这甚至都不是正则表达式。