我有一个超过5000行的文件。我需要在字符串JAMES之前和之后添加以下字符,例如:
'[^-_.*]JAMES[@-\.]'
如果我试图说JAMES可以在一行的开头,或者有破折号,下划线,任何字符在JAMES之前0次或更多次,并且@,破折号或句号可以跟随詹姆士?
我使用列表作为白名单将具有特定字符串(例如JAMES)的电子邮件打印到另一个文件。所以,它应该采取:
cat file.txt | egrep -e -i < whitelist | sort -u > newfile.txt
file.txt的电子邮件地址以换行符号分隔。
到目前为止,我在vim中使用了以下命令:
'%s/^$/[^-_.*]'
但是,所有这一切都是在文件末尾添加[^-_.*]
。
答案 0 :(得分:0)
您可能需要以下内容:
:g/.*/s//^[-_.]*&[-@.]*/
.*
查找整行,:g/.*/
在文件的每一行查找该行。 s//X&Y/
替换g//
找到的内容(整行)X
,找到的内容和Y
,但X
除外:
^[-_.]*
表示行的开头,后跟零,更多破折号,下划线或点,Y
为:
[-@.]*
表示零或更多的破折号,符号或点。如果您需要将其锚定到行尾,请在$
之后添加*
。
请注意,-
必须在字符类中显示为“first”(除非必须首先显示其他字符,例如^
否定字符类,或]
以匹配a关闭方括号)。