首页>>帮助中心>>美国VPS如何在grep和sed命令中使用扩展的正则表达式

美国VPS如何在grep和sed命令中使用扩展的正则表达式

2024/9/18 64次

美国VPS对于grep,可以使用egrep命令来替代,那么就支持扩展的正则表达式了。
对于sed,只要加上参数-r就可以支持扩展的正则表达式了。
以下是使用的例子,假设有一堆文件,内容都是诸如:
snme0001 测试
stta0001 测试
seef0001 测试
我们想把这些文件中不含有英文的句子合并到一个大文件中,我使用如下命令:
egrep '[[:alpha:]]{4}[[:digit:]]{4}' $' ' * | cut -d ":" -f2 | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' - | sed -r -e '/ .*[a-zA-Z]/!w ../M1.txt'

1. 首先把这些文件中符合句子ID格式的句子都抓出来。对于tab,egrep没有特别好的方法来匹配,必须用$' '来表示,而且由于$是个特殊符号,所以得把tab专门抽出来,而不能和其他的字符或者模式放到一个模式里。另外,*表示当前文件夹下的所有文件。
2. 抓取ID和句子。之所以用cut,因为egrep抓出来的句子的前边有文件名和冒号。所以,正好用cut,获取以冒号来分割的第二部分。
3. 由于有些句子的ID是大写字母,这里要全部转为小写字母。tr命令这里实在是不好用,因为它只能对文件进行处理。又不太会用awk,所以就用了sed的这个替换功能。y表示替换命令,然后要替换字符对前后来写,所以ABCD..和abcd的数目要相同。
4. 这里用到了!,这个表示符号条件的就不执行命令,不符合的才执行。也就是说,凡是在tab后出现了英文字母的句子,就不写到某个文件内。在sed里,是可以用 来表示tab的,比较好。


购买使用一诺网络美国VPS,可以极大降低初创企业、中小企业以及个人开发者等用户群体的整体IT使用成本,无需亲自搭建基础设施、简化了运维和管理的日常工作量,使用户能够更专注于自身的业务发展和创新。美国VPS低至49元/月,购买链接:https://www.enuoidc.com/vpszq.html?typeid=3