小编Nev*_*arn的帖子

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

我是社区的新手,这是我的第一个问题,我希望我做对了。

我的问题:我正在学习一些网络和分析,并且有很长的 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
Run Code Online (Sandbox Code Playgroud)

我需要的输出:

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...
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我希望你有时间帮助和原谅我的无知,我还在学习,如果我没有花一些时间搜索,我不会问。我看到人们使用 sed、awk 和 perl,但我不明白整个 linux 世界对我来说都是新的。请向我提供有关命令的一些解释,以便我下次学习如何自己做。

command-line bash text-processing

5
推荐指数
1
解决办法
142
查看次数

从多行文件中复制特定文本并使用终端自动将其粘贴到另一个文件中

我的问题是关于文本处理:

在列表中,我有以下格式的 IP 地址和计算机名称:

IP address: 192.168.1.25
Computer name: computer7office
IP address: 192.168.1.69
Computer name: computer22office
IP address: 192.168.1.44
Computer name: computer12personal
Run Code Online (Sandbox Code Playgroud)

我需要的输出:

This computer ip address is xxx.xxx.x.xx and is under the name zzzzzzzzzz
Run Code Online (Sandbox Code Playgroud)

如何使用命令行自动将列表中的 IP 和名称复制到输出文件?你能解释一下你的命令吗,因为当我不得不复制/粘贴我不理解的东西时很遗憾。

command-line bash text-processing

4
推荐指数
2
解决办法
2363
查看次数

修改列表:过滤它,并重新排列结果中的值

我有一个包含以下信息的文件:

用户名:sjohhny@email1.com
值一:xx:xx:xx:xx:xx:xx
值二:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
值三:Sjohhny@email1.com@[xx:xx] [三个值的混合]

用户名:Vsamba@email3.com
值一:mm:mm:mm:mm:mm:mm
数值二:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm
值三:Vsamba@email3.com@[xx:xx] [三个值的混合]

用户名:Skrids@email2.com
值一:yy:yy:yy:yy:yy:yy
值二:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy
值三:Skrids@email2.com@[xx:xx] [三个值的混合]

用户名:Vconan@email4.com
值一:zz:zz:zz:zz:zz:zz
值二:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz
值三:Vconan@email4.com@[xx:xx] [三个值的混合]

首先,我想过滤掉所有以 S 开头的用户名信息,保留那些以 V 开头的用户名。之后,我想制作一个可以运行的 .sh 脚本的最终产品。我想做的是:

  1. 回显用户名
  2. 删除第三个值
  3. 在第一个和第二个值上使用开关 -One、Two 和 --Thanks -for -visiting 运行命令 Hello。

所以,我的 .sh 文件将与此类似

echo 用户名:Vsamba@email3.com
你好 -一个 mm:mm:mm:mm:mm:mm -Two: mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm:mm --谢谢 -访问

echo 用户名:Vconan@email4.com
你好一 zz:zz:zz:zz:zz:zz -二:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz --Thanks -for -参观

我在 Youtube 上观看了关于 Sed 的整个视频系列,并阅读了这里的许多文章,试图想出一个可以生成我想要的脚本的脚本,但都失败了。你能告诉我如何编写这样的脚本吗?如果您推荐新用户可以阅读的有关 sed(或 Awk 或 Perl)的网站/参考资料,我也很乐意

请注意,“:”的数量对于值一和值二来说是静态的,这可能会以某种方式使用。我尝试使用它,但每次当我只要求一个值时我得到了两个值,但是你比我更知道如何利用这个事实。

抱歉问了这么长的问题!在没有自动化过程的情况下完成所有这些需要花费太多时间,而且我完全在 linux 世界(和一般的计算机,就此而言!)

command-line bash scripts text-processing

3
推荐指数
1
解决办法
155
查看次数

排序文件名 | uniq > 输出未删除重复项

所以我使用的命令如下:

sort file1.txt | uniq > cleared.txt
Run Code Online (Sandbox Code Playgroud)

但是,cleared.txt 文件的大小完全相同,并且所有重复项仍然存在。您能否解释一下我尝试做的方式有什么问题,也许还提供替代方案?

谢谢!

更新:我尝试使用以下 awk 命令,但重复项仍然存在。

awk '!seen[$0]++'
Run Code Online (Sandbox Code Playgroud)

也许值得一提的是,我试图清理的文件是从可能源自不同国家/布局的不同文件中收集的。请注意,我想保留一份重复的单词。

command-line

3
推荐指数
1
解决办法
2804
查看次数

如何在给定字符之前比较文本

我正在处理如下所示的程序输出:

Computer1@domain.com:randomtext1:completion of randomtext
Computer2@domain.com:randomtext4:completion of randomtext
Computer1@domain.com:randomtext3:completion of randomtext
Computer3@domain.com:randomtext2:completion of randomtext
Computer2@domain.com:randomtext5:completion of randomtext
Computer1@domain.com:randomtext6:completion of randomtext
Computer3@domain.com:randomtext7:completion of randomtext
Computer2@domain.com:randomtext8:completion of randomtext
Run Code Online (Sandbox Code Playgroud)

所以如你所见,同一台电脑会给我不止一个结果,但是每个结果在内容和长度上都是不同的(但都在一行中)。有些计算机只会给出 1 个结果,有些计算机会给出多达 15 个结果,具体取决于该计算机的活动。

我想要的是我只想看到每台计算机的一个结果而不是所有结果。我现在所做的是对它进行排序并手动删除副本,这不是很有帮助!我尝试使用诸如diffcomm 之类的命令,但没有运气(这是有道理的,因为行非常不同)。

那么,如何使用 via 终端将输出更改为与此类似:

Computer1@domain.com:randomtext1:completion of randomtext
Computer2@domain.com:randomtext4:completion of randomtext
Computer3@domain.com:randomtext2:completion of randomtext
Run Code Online (Sandbox Code Playgroud)

我脑子里的想法是,也许有一种方法可以告诉终端“比较 .com 之前或第一个之前的任何内容:并删除副本”

command-line text-processing

1
推荐指数
1
解决办法
214
查看次数

标签 统计

command-line ×5

text-processing ×4

bash ×3

scripts ×1