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

sh/bash/dash/ksh/zsh等Shell脚本
回复
sagekk
帖子: 1
注册时间: 2012-07-12 23:30

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

#1

帖子 sagekk » 2012-07-12 23:31

求教各位,现在想对某文件进行以下操作:
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被删除

请各位指点,谢谢
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

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

#2

帖子 aerofox » 2012-07-13 6:43

代码: 全选

sed 's/A1A1[^?&]\{5\}/A1A1/'
sed 's/A1A1[^?&].\{4\}/A1A1/'
选一个,后一个更切合你所描述的意思,但估计前一个也满足你的需要。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

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

#3

帖子 eexpress » 2012-07-13 9:00

● perl -pne 's/(?>A1).*([?&])/$1/' tt
# ● 2012-07-13_08:57:16
1234567890ABCDEFG?xxxxx
1234567890ABCDEFG?yyyyy
1234567890ABCDEFG&xxxxx
1234567890ABCDEFG&yyyyy
1234567890ABCDEFGA1A1
● 鸣学
回复