awk 匹配字符串中的反斜杠

问题描述 投票:0回答:1

我的文件内容如下:

  1. 2023-12-24T07:00:00 2152 4078 information.cp 253 TEST 验证“C:\ Windows \ Temp est file1.exe”的证书已完成,SHA1:“efdfe54bce9edc227bee03bc61cbfaa8b3c754ee”查找花费:“57969”纳秒,
  2. 2023-12-24T08:00:00 2152 4078 information.cp 253 TEST 验证“C:\Microsoft estfile2.exe”的证书已完成,SHA1:“ffdfe54bce9edc227bee03bc61cbfaa8b3c754dd”查找花费:“57970”纳秒,

仅当文件路径包含 Microsoft 或 Windows\Temp 时,我才希望打印文件路径和 SHA1。所以使用下面的命令:

awk -F\' '($2 ~ (Microsoft || Windows\\Temp) {print $2, $4}' file

但是看起来 awk 不喜欢“\”

awk:源代码第 1 行出现语法错误 上下文是 $2 ~ (微软 || >>> Windows\ <<< \Temp) {print $2, $4} awk: bailing out at source line 1

请帮忙

regex awk
1个回答
0
投票
  1. 反斜杠需要转义=>
    \\
  2. or
    条件需要 您可以为每个条件指定
    ~
    匹配运算符

这就是让它工作的样子:

awk -F\' '($2 ~ /Microsoft/ || $2 ~ /Windows\\Temp/) {print $2, $4}' file

或者只是:

awk -F\' '($2 ~ /Microsoft|Windows\\Temp/) {print $2, $4}' file

因为 or 条件也可以嵌入到正则表达式中..需要将其括在

/

© www.soinside.com 2019 - 2024. All rights reserved.