sed 删除 MAC 包含关键字的行指示的地址
Sed remove MAC address indicated by lines including keywords
我正在对包含特定字符的文件中的 MAC 地址进行混淆处理。但是,我只想在 "event" 关键字指示的行中删除它。对我来说困难的是"even"关键字和MAC地址之间会有随机长度的关键字(包括数字和字母)。
所以我要替换:
[random length combinations of words, numbers, potentially punctuation or space] "event" [random length combinations of words, numbers, potentially punctuation or space] "xx:xx:xx:xx:xx:xx" [random length combinations of words, numbers, potentially punctuation, nothing at all or space]
到 "x"
我只知道如何混淆 MAC 地址:
sed -E 's/'([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}')/ x /g'
但我不知道如何修改它以混淆特定行。例如,我有一个文件 input.txt:
[INFO] device 1 event - client connected with aa:bb:8a:de:8e:23
[ERROR] device 2 event - routing data to gg:7a:e3:89:2f:2f failed
[LOG] device 3 connected
[INFO] connected to 2 devices. event: aa:bb:8a:de:8e:23 success!
输出应该是:
[INFO] device 1 event - client connected with x
[ERROR] device 2 event - routing data to x failed
[LOG] device 3 connected
[INFO] connected to 2 devices. event: x success!
这是一个可能的 sed
解决方案 - 它允许 event
出现在该行的任何位置,它必须是一个完整的单词(不是较长单词的一部分,例如 eventful
),并且一行中可能有多个 MAC 地址 - 如果单词 event
出现在同一行上,则必须屏蔽所有这些地址。我也使用 xx:xx:xx:xx:xx:xx
作为掩码,但您可以轻松替换它。
我创建了以下输入文件用于测试:
$ cat mac.input
[INFO] device 1 event - client connected with aa:bb:8a:de:8e:23
[ERROR] device 2 event - routing data to gg:7a:e3:89:2f:2f failed
[LOG] device 3 connected
[INFO] connected to 2 devices. event: aa:bb:8a:de:8e:23 success!
[LINE] this was an eventful evening 22:33:22:33:22:33
[TWO MAC ADDRESSES] aa:bb:aa:33:dd:1f is event 99:33:00:23:43:83 good
正如我已经提到的,第二行的 "address" 将不会被屏蔽(即使存在单词 event
),因为该地址不是有效的 MAC 地址首先 - g
不是十六进制数字。 [LINE]
行上的地址不会被屏蔽,因为单词 event
本身不存在(即使 eventful
存在)。在最后一行有两个 MAC 地址,我都屏蔽了 - 即使是 在 单词事件之前出现的地址。 (我在评论中要求您澄清这种情况是否可能,如果可能,必须如何处理;这里我只是随机选择以显示可能的情况。)
所以,这里是 sed
命令及其输出:
$ sed -E '/\bevent\b/
> s/([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}/xx:xx:xx:xx:xx:xx/g' mac.input
[INFO] device 1 event - client connected with xx:xx:xx:xx:xx:xx
[ERROR] device 2 event - routing data to gg:7a:e3:89:2f:2f failed
[LOG] device 3 connected
[INFO] connected to 2 devices. event: xx:xx:xx:xx:xx:xx success!
[LINE] this was an eventful evening 22:33:22:33:22:33
[TWO MAC ADDRESSES] xx:xx:xx:xx:xx:xx is event xx:xx:xx:xx:xx:xx good
我正在对包含特定字符的文件中的 MAC 地址进行混淆处理。但是,我只想在 "event" 关键字指示的行中删除它。对我来说困难的是"even"关键字和MAC地址之间会有随机长度的关键字(包括数字和字母)。 所以我要替换:
[random length combinations of words, numbers, potentially punctuation or space] "event" [random length combinations of words, numbers, potentially punctuation or space] "xx:xx:xx:xx:xx:xx" [random length combinations of words, numbers, potentially punctuation, nothing at all or space]
到 "x" 我只知道如何混淆 MAC 地址:
sed -E 's/'([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}')/ x /g'
但我不知道如何修改它以混淆特定行。例如,我有一个文件 input.txt:
[INFO] device 1 event - client connected with aa:bb:8a:de:8e:23
[ERROR] device 2 event - routing data to gg:7a:e3:89:2f:2f failed
[LOG] device 3 connected
[INFO] connected to 2 devices. event: aa:bb:8a:de:8e:23 success!
输出应该是:
[INFO] device 1 event - client connected with x
[ERROR] device 2 event - routing data to x failed
[LOG] device 3 connected
[INFO] connected to 2 devices. event: x success!
这是一个可能的 sed
解决方案 - 它允许 event
出现在该行的任何位置,它必须是一个完整的单词(不是较长单词的一部分,例如 eventful
),并且一行中可能有多个 MAC 地址 - 如果单词 event
出现在同一行上,则必须屏蔽所有这些地址。我也使用 xx:xx:xx:xx:xx:xx
作为掩码,但您可以轻松替换它。
我创建了以下输入文件用于测试:
$ cat mac.input
[INFO] device 1 event - client connected with aa:bb:8a:de:8e:23
[ERROR] device 2 event - routing data to gg:7a:e3:89:2f:2f failed
[LOG] device 3 connected
[INFO] connected to 2 devices. event: aa:bb:8a:de:8e:23 success!
[LINE] this was an eventful evening 22:33:22:33:22:33
[TWO MAC ADDRESSES] aa:bb:aa:33:dd:1f is event 99:33:00:23:43:83 good
正如我已经提到的,第二行的 "address" 将不会被屏蔽(即使存在单词 event
),因为该地址不是有效的 MAC 地址首先 - g
不是十六进制数字。 [LINE]
行上的地址不会被屏蔽,因为单词 event
本身不存在(即使 eventful
存在)。在最后一行有两个 MAC 地址,我都屏蔽了 - 即使是 在 单词事件之前出现的地址。 (我在评论中要求您澄清这种情况是否可能,如果可能,必须如何处理;这里我只是随机选择以显示可能的情况。)
所以,这里是 sed
命令及其输出:
$ sed -E '/\bevent\b/
> s/([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}/xx:xx:xx:xx:xx:xx/g' mac.input
[INFO] device 1 event - client connected with xx:xx:xx:xx:xx:xx
[ERROR] device 2 event - routing data to gg:7a:e3:89:2f:2f failed
[LOG] device 3 connected
[INFO] connected to 2 devices. event: xx:xx:xx:xx:xx:xx success!
[LINE] this was an eventful evening 22:33:22:33:22:33
[TWO MAC ADDRESSES] xx:xx:xx:xx:xx:xx is event xx:xx:xx:xx:xx:xx good