我有,我有一些像这个 - 一个文本文件
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
只需更换\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
$
找:
(\d+\.\d+\.\d+\.\d+).*
并替换为:
\1
括号将捕获的正则表达式的一部分到一个变量,它被命名为\1
(因为它是在正则表达式第一捕获块)。 该行的其余部分没有拍摄,但仅仅通过替换操作抛出。
如果你有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