我有一个大约300KB的文本文件.我想删除此文件中以字母"P"开头的所有行.这就是我一直在使用的:
> cat file.txt | egrep -v P*
Run Code Online (Sandbox Code Playgroud)
那不是输出到控制台.我可以在没有其他命令的情况下在文件上使用cat,它打印出来就很好.我的最终目的是:
> cat file.txt | egrep -v P* > new.txt
Run Code Online (Sandbox Code Playgroud)
没有出现错误,它只是不打印任何内容,如果我运行第二个命令,new.txt为空.我应该说我正在运行安装了Cygwin的Windows 7.
Édo*_*pez 13
^将您的模式锚定到行的开头;sed和d标志匹配的行.cat file.txt | sed '/^P/d'
Run Code Online (Sandbox Code Playgroud)
使用sed-only:
sed '/^P/d' file.txt > new.txt
Run Code Online (Sandbox Code Playgroud)
用awk:
awk '!/^P/' file.txt
Run Code Online (Sandbox Code Playgroud)
!(否定)开始,否定以下模式;
/^P/意思是"匹配以大写字母开头的所有行P",P字母开头的行 ".awk当缺少{ … }(动作块)时,它会利用行为,即打印验证条件的记录.所以,换句话说,它会忽略以大写P字母开头的行并打印其他内容.
sed是面向行和awk列导向的.对于你的情况,你应该使用第一个,见Edouard Lopez的回应.
| 归档时间: |
|
| 查看次数: |
15360 次 |
| 最近记录: |