awk 文件操作
我的文本文件中有以下文字,我想提取如下。
device1 te rfe3 -1 10.1.2.3 device1 te rfe3
device2 cdr thr 10.2.5.3 device2 cdr thr
device4 10.6.0.8 device4
device3 hrdnsrc dhe 10.8.3.6 device3 hrdnsrc dhe
我的目标是提取设备名称和 IP 地址,并去掉其他所有内容。 设备名称后没有模式,有些有 2-3 个单词,有些没有任何内容。我也不需要第三列。我正在寻找这样的结果。
device1 10.1.2.3
device2 10.2.5.3
device3 10.8.3.6
device3 10.8.9.4
这可能吗?提前致谢。
I have the following words on my text file and I want extract as follow.
device1 te rfe3 -1 10.1.2.3 device1 te rfe3
device2 cdr thr 10.2.5.3 device2 cdr thr
device4 10.6.0.8 device4
device3 hrdnsrc dhe 10.8.3.6 device3 hrdnsrc dhe
my objective is to extract the device name and the ip adrress everything else to strip away.
the is no pattern after device name some of them has 2-3 word some of them does not have any thing. also I don't need the 3rd column. I am looking the result like this.
device1 10.1.2.3
device2 10.2.5.3
device3 10.8.3.6
device3 10.8.9.4
is this possible? Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
根据垃圾与 IP 号码的接近程度,这可能会也可能不会满足您的需求:
Depending on how close to an IP number the cruft get, this may or may not cat your cake:
À 使用 perl 的
cut
解决方案,如果文件始终采用相同的列格式,则可以使用“unpack”:或者使用正则表达式获取第一个单词,后跟空格
^ (\w+\s)
,然后是.
后面的一位或多位数字 3 次(\d+(\.\d+){3})
:命名捕获 (
$+{name} $+{ip}
) 只是为了好玩:-)À la the
cut
solution with perl you could use "unpack" if the file is always in the same format column wise:Or use a regular expression to get the first word followed by a space
^(\w+\s)
and then one or more digits following a.
3 times(\d+(\.\d+){3})
:The named captures (
$+{name} $+{ip}
) are just for fun :-)Python 不在您的列表中,但类似的东西可能会起作用。
它应该可以在大多数 Linux 平台上运行,因为 Python 已经安装了。
Python's not on your list, but something like this might work.
It should work on most Linux platforms, since Python is already installed.
假设输入文件的字段始终与相同的列对齐,最短的 POSIX 解决方案是
Assuming the input file has the fields always aligned to the same columns, the shortest POSIX solution would be
概念验证
Proof of Concept
在
awk
中,这类似于以下内容:
In
awk
, this is something likeHere's a transcript:
在 perl 中
对于排序结果,您可能可以将输出通过管道传输到排序命令
更新的脚本,如版本
in perl
for sorted results you could probably pipe the output to sort command
Updated script like version