使用 vim 或 grep 或其他从大文件中删除字符
Delete characters from a big file using vim or grep or other
我有一个大文件,其中包含大约 500000 个数字,其中一些数字包含 URl,密码,正如您在下面的文件示例中看到的那样,我想删除这些数字并只保留那些包含 Url、密码
的数字
101045
101046
101047
101048
101049 <Password>eee33ddrFDE</Password>
<Url>http://www.example.com/9786140220447.php</Url>
--
<Password>6tgHDDYUqLH</Password>
<Url>http://www.example.com/9786140204102.php</Url>
101050
101051
101052
101053
101054
我尝试使用 cat 和 grep 以及 vim
:%s/^.\{6}//
但它会删除所有号码,即使是那些有 Url、我想保留密码的号码。
您只想保留那些包含密码或 url?.
的行
您可以使用 sed
:
sed '/^[0-9]\+$/d'
或grep
:
grep '[0-9]\+ '
或 vim
:
:g/^[0-9]\+$/d
这将删除所有只有数字的行:
awk '!/^[0-9]*$/' file
101049 <Password>eee33ddrFDE</Password>
<Url>http://www.example.com/9786140220447.php</Url>
--
<Password>6tgHDDYUqLH</Password>
<Url>http://www.example.com/9786140204102.php</Url>
或者你可以使用这个:
awk '/Password|http/' file
仅打印带有 Password
或 http
的行
或者你可以清理一下:
awk -F"[<>/]" '/Password/ {print "Password="} /http/ {print "Url="}' file
Password=eee33ddrFDE
Url=www.example.com
Password=6tgHDDYUqLH
Url=www.example.com
如果你想删除没有 password/URI 信息的行,你可以尝试:
grep -E "[^0-9]+" filename
我有一个大文件,其中包含大约 500000 个数字,其中一些数字包含 URl,密码,正如您在下面的文件示例中看到的那样,我想删除这些数字并只保留那些包含 Url、密码
的数字101045
101046
101047
101048
101049 <Password>eee33ddrFDE</Password>
<Url>http://www.example.com/9786140220447.php</Url>
--
<Password>6tgHDDYUqLH</Password>
<Url>http://www.example.com/9786140204102.php</Url>
101050
101051
101052
101053
101054
我尝试使用 cat 和 grep 以及 vim
:%s/^.\{6}//
但它会删除所有号码,即使是那些有 Url、我想保留密码的号码。
您只想保留那些包含密码或 url?.
的行您可以使用 sed
:
sed '/^[0-9]\+$/d'
或grep
:
grep '[0-9]\+ '
或 vim
:
:g/^[0-9]\+$/d
这将删除所有只有数字的行:
awk '!/^[0-9]*$/' file
101049 <Password>eee33ddrFDE</Password>
<Url>http://www.example.com/9786140220447.php</Url>
--
<Password>6tgHDDYUqLH</Password>
<Url>http://www.example.com/9786140204102.php</Url>
或者你可以使用这个:
awk '/Password|http/' file
仅打印带有 Password
或 http
或者你可以清理一下:
awk -F"[<>/]" '/Password/ {print "Password="} /http/ {print "Url="}' file
Password=eee33ddrFDE
Url=www.example.com
Password=6tgHDDYUqLH
Url=www.example.com
如果你想删除没有 password/URI 信息的行,你可以尝试:
grep -E "[^0-9]+" filename