gpt4 book ai didi

linux - sed 删除 # 和 # 之间的字符并添加 :'s in bash script?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:27 26 4
gpt4 key购买 nike

我正在处理一个处理 OUI mac 地址数据库 ( http://standards.ieee.org/regauth/oui/oui.txt ) 的脚本,示例输出如下所示:

  40-25-C2   (hex)      Intel Corporate
4025C2 (base 16) Intel Corporate
Lot 8, Jalan Hi-Tech 2/3
Kulim Hi-Tech Park
Kulim Kedah 09000
MALAYSIA

40-27-0B (hex) Mobileeco Co., Ltd
40270B (base 16) Mobileeco Co., Ltd
#2126, IT Tower B, Keumkang Penterium Bldg, 810
Kwanyang-Dong, Dongan-Ku
Anyang City Kyunggi-Do 431810
KOREA, REPUBLIC OF

最后我希望每一行看起来像这样:

40:25:C2 Intel Corporate
40:27:0B Mobileeco Co., Ltd

我不知道解决这个问题的最佳方法是什么,到目前为止,我一直在一步一个脚印,这就是我目前所拥有的

sed '/base 16/!d' test.txt > test1.txt  # delete all extra lines
sed 's/^...//' test1.txt > test2.txt # delete 3 spaces at the beginning of each line

下一步将是删除空格和(以 16 为基数),但我似乎无法让它工作......或者我将如何添加 :'s

除非有更好的方法来做到这一点。

我还需要在 osx 和 ubuntu 中运行它

提前致谢!

最佳答案

一种方式是说:

sed -r -n '/base 16/{s/\s+(..)(..)(..)\s+\([^)]*\)\s+/\1:\2:\3 /p}' test.txt

对于您的输入,它会产生:

40:25:C2 Intel Corporate
40:27:0B Mobileeco Co., Ltd

或者,你可以说:

sed -n '/base 16/{s/\s*\(..\)\(..\)\(..\)\s*([^)]*)\s*/\1:\2:\3 /p}' test.txt

这应该适用于 Ubuntu 和 OSX。

关于linux - sed 删除 # 和 # 之间的字符并添加 :'s in bash script?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20160324/

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