国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

幫助中心 >  技術(shù)知識庫 >  云服務(wù)器 >  服務(wù)器教程 >  如何在grep和sed命令中使用擴展的正則表達式

如何在grep和sed命令中使用擴展的正則表達式

2017-01-12 08:21:23 6822

對于grep,可以使用egrep命令來替代,那么就支持?jǐn)U展的正則表達式了。

對于sed,只要加上參數(shù)-r就可以支持?jǐn)U展的正則表達式了。

以下是使用的例子,假設(shè)有一堆文件,內(nèi)容都是諸如:

snme0001 今天心情不錯!

stta0001 明天是周五。

seef0001 能把你的IPAD借給我玩玩嗎?

我們想把這些文件中不含有英文的句子合并到一個大文件中,我使用如下命令:

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專門抽出來,而不能和其他的字符或者模式放到一個模式里。另外,*表示當(dāng)前文件夾下的所有文件。

2. 抓取ID和句子。之所以用cut,因為egrep抓出來的句子的前邊有文件名和冒號。所以,正好用cut,獲取以冒號來分割的第二部分。

3. 由于有些句子的ID是大寫字母,這里要全部轉(zhuǎn)為小寫字母。tr命令這里實在是不好用,因為它只能對文件進行處理。又不太會用awk,所以就用了sed的這個替換功能。y表示替換命令,然后要替換字符對前后來寫,所以ABCD..和abcd的數(shù)目要相同。

4. 這里用到了!,這個表示符號條件的就不執(zhí)行命令,不符合的才執(zhí)行。也就是說,凡是在tab后出現(xiàn)了英文字母的句子,就不寫到某個文件內(nèi)。在sed里,是可以用 來表示tab的,比較好。


提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: