- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機構(gòu):新網(wǎng)數(shù)碼
對于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的,比較好。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP