为什么用perl删除一个文件中与另一个文件相同的部分,结果删了很多不该删的内容?
发布网友
发布时间:2022-11-03 06:50
我来回答
共1个回答
热心网友
时间:2023-10-29 15:59
看你具体要求了,你这是把某个文件每行全部记录,然后在下个文件读的过程中去匹配刚才记忆的每一行,只要开头相同就会去掉,有这么几个问题。比如记录的是
123
1234
abc
去掉的文件原来是
123 之后 (空行)
1234 之后 4 (因为匹配的时候首先匹配123,成功,就去掉123)
p abc 之后 p abc (不变)
abc123 之后 123(去掉了abc)
总之看你具体要求,你如果想要去掉第一个文件里面所有关键词,就在s后面加g的选项;如果想某一行完全匹配再删掉,就匹配到行末,用$符号结尾;如果想在刚才的例子把123和1234都去掉,就得在前面排序,先匹配长的,再匹配短的。追问为何用$符号结尾后,有该删的内容没删掉?(txt2中的内容都在txt1中)
追答你是说像p abc这样的不会删abc;还是abc 123这样的不会删abc;这是显然的,因为是完全匹配行;你的问题太抽象,没有例子,因为根据实际要求变化很多。不妨把例子贴来看看