使用vim或grep或其他方法从大文件中删除字符

时间:2015-03-16 11:55:23

标签: vim sed grep cut tr

我有一个大文件,其中包含大约500000个数字,其中一些数字包含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,密码的号码。

3 个答案:

答案 0 :(得分:1)

您想只保留包含密码或网址的那些行吗?

您可以使用sed

sed '/^[0-9]\+$/d'

grep

grep '[0-9]\+ '

vim

:g/^[0-9]\+$/d

答案 1 :(得分:0)

这将删除仅为number的所有行:

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

仅打印包含Passwordhttp

的行

或者你可以清理一下:

awk -F"[<>/]" '/Password/ {print "Password="$3} /http/ {print "Url="$5}' file
Password=eee33ddrFDE
Url=www.example.com
Password=6tgHDDYUqLH
Url=www.example.com

答案 2 :(得分:0)

如果你想摆脱没有密码/ URI信息的行,你可以试试:

grep -E "[^0-9]+" filename