分页: 1 / 1

关于查找文件中字符替换的问题

发表于 : 2012-07-12 23:31
sagekk
求教各位,现在想对某文件进行以下操作:
1 查找文件中的特定字符A1A1
2 判断1中查找到的字符后面是否是换行符,?或&符号
3 如不是,则删除A1A1后面的5个字符

例:
1234567890ABCDEFGA1A1?xxxxx
1234567890ABCDEFGA1A1zzzzz?yyyyy
1234567890ABCDEFGA1A1&xxxxx
1234567890ABCDEFGA1A1zzzzz&yyyyy
1234567890ABCDEFGA1A1
变换为
1234567890ABCDEFGA1A1?xxxxx
1234567890ABCDEFGA1A1?yyyyy
1234567890ABCDEFGA1A1&xxxxx
1234567890ABCDEFGA1A1&yyyyy
1234567890ABCDEFGA1A1

第二行与第四行的zzzzz被删除

请各位指点,谢谢

Re: 关于查找文件中字符替换的问题

发表于 : 2012-07-13 6:43
aerofox

代码: 全选

sed 's/A1A1[^?&]\{5\}/A1A1/'
sed 's/A1A1[^?&].\{4\}/A1A1/'
选一个,后一个更切合你所描述的意思,但估计前一个也满足你的需要。

Re: 关于查找文件中字符替换的问题

发表于 : 2012-07-13 9:00
eexpress
● perl -pne 's/(?>A1).*([?&])/$1/' tt
# ● 2012-07-13_08:57:16
1234567890ABCDEFG?xxxxx
1234567890ABCDEFG?yyyyy
1234567890ABCDEFG&xxxxx
1234567890ABCDEFG&yyyyy
1234567890ABCDEFGA1A1