1
我有一個包含5000多行的文件。我需要前後串後添加下列字符,JAMES,例如:將文本添加到vim中一行的開頭和結尾處
'[^-_.*]JAMES[@-\.]'
這是正確的,如果我想說,詹姆斯可以在一行的開頭,或有破折號,下劃線,詹姆斯之前的任何人物可以有0次或更多次,而詹姆斯可以跟隨@,短劃線或時期嗎?
我使用列表作爲白名單來打印具有特定字符串(例如JAMES)的電子郵件到另一個文件。因此,它應該採取:
cat file.txt | egrep -e -i < whitelist | sort -u > newfile.txt
file.txt以新行分隔的電子郵件地址。
到目前爲止,我以前在vim以下命令:
'%s/^$/[^-_.*]'
然而,這一切做的是添加[^-_.*]
到文件的末尾。
確實有必要在有'.'(任何字符)匹配器時添加'-'和'_'?我認爲在這種情況下不需要括號表達式。如果我錯了,請糾正我。 – limekin
@limekin:在一個字符類中,'.'只是另一個字符。除了'^',''''和'-'(有時也包括''''''''),大多數字符在字符類中會失去特殊行爲。我認爲'''在角色類中獲得特殊含義會更準確。 –
奇怪的是,文件中有很多行使用>'cat file | egrep -I -f白名單| tee newfile「似乎在工作,直到它到達字母表的低位字母。然後,與我的白名單中的任何名稱不匹配的行都會漏掉。有什麼我可以添加到白名單來阻止? – technerdius