在终端中从文本复制到文本

在终端中从文本复制到文本

我是社区的新人,这是我的第一个问题,我希望我做得正确。

我的问题:我正在学习一些网络和分析,并且有一个很长的 MAC 地址列表,我想使用命令行将它们放在同一个句子中,但我不知道如何做。

例如:MAC 地址:

xx:xx:xx:xx:xx:xx:xx:xx
yy:yy:yy:yy:yy:yy:yy:yy
zz:zz:zz:zz:zz:zz:zz:zz

我需要的输出:

The mac address xx:xx:xx:xx:xx:xx:xx:xx is not found - but...
The mac address yy:yy:yy:yy:yy:yy:yy:yy is not found - but...
The mac address zz:zz:zz:zz:zz:zz:zz:zz is not found - but...

我怎样才能实现这个目标?

我希望您有时间帮助我并原谅我的无知,我还在学习,如果我不花点时间搜索的话,我不会问这个问题。我看到有人使用 sed、awk 和 perl,但我什么都不懂,因为整个 linux 世界对我来说都是新的。请为我提供一些命令说明,以便我下次学习如何自己操作。

答案1

假设您的列表位于一个名为的文件中file,其中没有其他内容(看起来是这种情况),您可以使用:

sed 's/.*/The mac address & is not found - but.../' file
  • s/old/newold用。。。来代替new
  • .*匹配每行任意数量的任意字符
  • &在这里打印先前匹配的内容

如果您看到了想要的输出,请重复该命令(按向上箭头查看和编辑上一个命令),并>在末尾将重定向()添加到新文件,如下所示:

sed 's/.*/The mac address & is not found - but.../' file > newfile

答案2

第一个问题的答案:

sed 's/$/ is not found - but.../' FILENAME | sed 's/^/The mac address /'

这种用法sed只是用第二个字符串替换第一个字符串。$表示行尾。^表示行首。

第二个问题的答案:

sed 'N;s/\n/ /' FILENAME | sed 's/IP address:/This computer ip address is/' | sed 's/Computer name:/and is under the name/'

首先sed合并每两行。剩下的sed用新表达式替换旧表达式以构建新行。

相关内容