1

私はこのようなものを含むテキストファイルを持っています-

10.2.57.44      56538154    3028
120.149.20.197  28909678    3166
10.90.158.161   869126135   6025

そのテキスト ファイルには、上記とまったく同じように約 400,000 行あります。Notepad++ で同じテキスト ファイルを開きました。そのテキスト ファイルからすべてを削除して、IP アドレスだけを残す方法が必要でした (上記のテキスト ファイルの最初の列は IP アドレスです)。正規表現を使用してそれを行うことができると思います。また、notepad++ には、正規表現を使用するオプションもあります。しかし、どの正規表現を使用する必要があるのか​​ わかりません。誰か助けてくれませんか?

したがって、出力は次のようになります-

10.2.57.44
120.149.20.197
10.90.158.161
4

3 に答える 3

3

探す:

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

そして、次のものに置き換えます。

\1

括弧は、正規表現のその部分を名前付きの変数にキャプチャし\1ます (正規表現の最初のキャプチャ ブロックであるため)。行の残りの部分は取り込まれず、置換操作によって単純に破棄されます。

于 2013-01-11T01:43:53.903 に答える
3

何もないものと交換\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
$ 
于 2013-01-11T01:45:34.340 に答える
0

gawk などがある場合:

gawk "{print $1}" filename

Linux(bash)では、の使用法は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
于 2013-01-11T01:56:48.457 に答える