在后IP地址的文本文件,取代一切(Replace everything in the text fi

2019-10-28 10:56发布

我有,我有一些像这个 - 一个文本文件

10.2.57.44      56538154    3028
120.149.20.197  28909678    3166
10.90.158.161   869126135   6025

在该文本文件,我就像上面那样大约40万行。 我已经打开在记事本中的同一个文本文件++。 我需要一种方法来删除该文本文件只保留IP地址的一切(第一列在上面的文本文件是IP地址)。 我想,我能做到这一点使用正则表达式。 和记事本+ +还具有使用正则表达式的选项。 但不知道我需要使用什么正则表达式。 有人可以帮我从这里出去吗?

所以输出应该像这个 -

10.2.57.44
120.149.20.197
10.90.158.161

Answer 1:

只需更换\s.*什么也没有! 一个正则表达式只需要匹配它所需要匹配,并且你想在这里匹配的是一个空格,然后什么(因此留下的IP地址独自一人,因为它开始的行,也没有空格的话)

或者,如果你有的话,这是做得更为出色了经典Unix命令:

sed -i 's/\s.*//' thefile

例:

$ cat <<EOF | sed 's/\s.*//'
> 10.2.57.44      56538154    3028
> 120.149.20.197  28909678    3166
> 10.90.158.161   869126135   6025
> EOF
10.2.57.44
120.149.20.197
10.90.158.161
$ 


Answer 2:

找:

(\d+\.\d+\.\d+\.\d+).*

并替换为:

\1

括号将捕获的正则表达式的一部分到一个变量,它被命名为\1 (因为它是在正则表达式第一捕获块)。 该行的其余部分没有拍摄,但仅仅通过替换操作抛出。



Answer 3:

如果你有GAWK或东西:

gawk "{print $1}" filename

在Linux操作系统(庆典)的使用awk将类似于以下内容:

suku@ubuntu-vm:~$ cat stack 
10.2.57.44      56538154    3028
120.149.20.197  28909678    3166
10.90.158.161   869126135   6025
suku@ubuntu-vm:~$ cat stack | awk '{ print $1 }'
10.2.57.44
120.149.20.197
10.90.158.161


文章来源: Replace everything in the text file after IP Address