You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在awk中忽略双引号匹配指定字符串模式?

如何在awk中忽略双引号匹配目标模式?

嘿,我来帮你搞定这个awk匹配的问题~你想要匹配Backing up "/1/2" on One这个模式,但希望不管有没有双引号都能匹配到,对吧?其实很简单,只要在正则表达式里把双引号的位置改成可选匹配就行。

核心修改点

在awk的正则中,"?表示该位置可以有0个或1个双引号,这样就能忽略双引号的存在与否,精准匹配目标内容。另外要注意,路径里的/是awk正则的分隔符,所以需要转义成\/,避免语法错误。

修改后的完整命令

awk -F"[.: ]" '/Backing up "?\/1\/2"? on One/ {start = mktime($3" "$2" "$1" "$4" "$5" "$6); hms = sprintf("%s:%s:%s,", $4, $5, $6);} / Backup completed/ {end = mktime($3" "$2" "$1" "$4" "$5" "$6); if (end) {print hms end - start; start = ""; }}' logs.txt

额外优化(可选)

如果你觉得转义/很麻烦,可以改用awk的匹配操作符~,并自定义正则分隔符(比如@),这样就不用转义路径里的/了,代码会更清晰:

awk -F"[.: ]" '$0 ~ @Backing up "?/1/2"? on One@ {start = mktime($3" "$2" "$1" "$4" "$5" "$6); hms = sprintf("%s:%s:%s,", $4, $5, $6);} / Backup completed/ {end = mktime($3" "$2" "$1" "$4" "$5" "$6); if (end) {print hms end - start; start = ""; }}' logs.txt

这样修改后,不管日志里的行是带双引号的Backing up "/1/2" on One,还是不带双引号的Backing up /1/2 on One,都能被正确匹配到啦~

内容的提问来源于stack exchange,提问作者Kaverappa KU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:35:12