gpt4 book ai didi

过滤命令输出时出现正则表达式错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:25 25 4
gpt4 key购买 nike

我想过滤来自以下命令的行:

$ cat /proc/net/route
Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT
br-lan 01020300 C0A80101 0003 0 0 3 FFFFFF00 0 0 0
br-lan 03043836 C0A80101 0007 0 0 5 FFFFFFFF 0 0 0
br-lan C0A80100 00000000 0001 0 0 0 FFFFFF00 0 0 0

我只想提取包含 Destination 01020300 和 Mask FFFFFF00

的行

我尝试使用以下正则表达式,但它不起作用

cat /proc/net/route | grep "[^ \t\v]\+[ \t\v]\+$dest[ \t\v]\+[^ \t\v]\+[ \t\v]\+[^ \t\v]\+[ \t\v]\+[^ \t\v]\+[ \t\v]\+[^ \t\v]\+[ \t\v]\+[^ \t\v]\+[ \t\v]\+$mask"

我是正则表达式格式的新手。你能帮我为这个案例提供一个好的正则表达式吗?

最佳答案

也许为此使用 awk 更容易:

$ awk '$2=="01020300" && $8=="FFFFFF00"' file
br-lan 01020300 C0A80101 0003 0 0 3 FFFFFF00 0 0 0

这样您就可以引用第 2 和第 8 列并检查其值,而不必担心格式。

如果您的文件使用制表符而不是空格分隔字段,请使用:

awk -F"\t" '$2=="01020300" && $8=="FFFFFF00"' file

如果你想从 bash 变量中给出这个值,你可以这样做(参见评论,Glenn Jackman、Etan Reisner 和 Ed Morton 给出了很好的解释):

awk -v d="$dest" -v m="$mask" '$2==d && $8==m' file

关于过滤命令输出时出现正则表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23370085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com