我有一个文本文件,其中我有这样的东西 -
10.2.57.44 56538154 3028
120.149.20.197 28909678 3166
10.90.158.161 869126135 6025
Run Code Online (Sandbox Code Playgroud)
在那个文本文件中,我有大约1,000,000行,如上所述.我在SunOS环境中工作.我需要一种方法来删除该文本文件中的所有内容,只留下IP地址(上面文本文件中的第一列是IP地址).因此在运行一些unix命令后,文件应该如下所示.
10.2.57.44
120.149.20.197
10.90.158.161
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决一些Unix命令,它可以删除所有只留下IP地址(第一列)的东西并再次将其保存回某个文件.
所以在某些文件中输出应该是这样的 -
10.2.57.44
120.149.20.197
10.90.158.161
Run Code Online (Sandbox Code Playgroud)
Mud*_*san 22
如果分隔符是空格字符使用
cut -d " " -f 1 filename
Run Code Online (Sandbox Code Playgroud)
如果分隔符是制表符,则不需要-d选项作为选项卡是cut
命令的默认分隔符
cut -f 1 filename
Run Code Online (Sandbox Code Playgroud)
-d 分隔符; 紧跟在-d选项后面的字符是字段分隔符.
-f 指定由分隔符分隔的字段列表
she*_*ter 10
nawk '{print $1}' file > newFile && mv newFile file
Run Code Online (Sandbox Code Playgroud)
要么
cut -f1 file > newFile && mv newFile file
Run Code Online (Sandbox Code Playgroud)
当你使用SunOS时,你会想要熟悉nawk(不是awk,这是awk的旧版和胡思乱想的版本,而nawk = new awk ;-).
在任何一种情况下,您都将文件中的第一个字段打印到newFile.
(n)awk是一种完整的编程语言,专为轻松操作文本文件而设计.该$1
方法在每一行的第一个字段,$ 9将意味着第九场等,而$ 0表示整行.你可以告诉(n)awk使用什么来分隔字段,它可能是tab char,或者是'|' char或多个空格.默认情况下,awk的所有版本都使用空格(即多个空格)或1个制表符来分隔文件中每行的列/字段.
有关awk的非常好的介绍,请参阅Grymoire的Awk页面
这&&
意味着,只有在前一个命令完成且没有问题的情况下才执行下一个命令.这样你就不会意外删除你的好数据文件,因为有些错误.
IHTH