LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2038|回复: 24

从开始到ABC(不含)结束,如何用正则表达式描述

[复制链接]
发表于 2005-4-13 20:31:01 | 显示全部楼层 |阅读模式
用VIM处理文档,需要把
xasdfasfABC...
2132ABC...
xxxxABC...


每一行的ABC之前的干掉.但不知如何描述其中的红色部分,谢谢大家.
发表于 2005-4-13 21:39:26 | 显示全部楼层
/[`A-C]$/
可能是这个,兄弟可以去试试,我也是一个初学者,请高手指教,能不能这么写!
回复 支持 反对

使用道具 举报

发表于 2005-4-13 23:59:35 | 显示全部楼层
用awk处理不行吗?一定要用vim处理?

  1. $ cat test.txt
  2. asdssdABC1111
  3. 23433ABC4342
  4. 2345ABCsdfsd
  5. $ cat test.txt |awk -F"ABC" '
  6. {printf ("%s%s\n","ABC",$2)}'
  7. ABC1111
  8. ABC4342
  9. ABCsdfsd
  10. $
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-14 11:26:16 | 显示全部楼层
Post by 不死潜龙
/[`A-C]$/
可能是这个,兄弟可以去试试,我也是一个初学者,请高手指教,能不能这么写!

不行啊.
回复 支持 反对

使用道具 举报

发表于 2005-4-14 11:55:12 | 显示全部楼层
  1. zhyfly@zhyfly:~/bash$ cat 1
  2. xasdfasfABC...
  3. 2132ABC...
  4. xxxxABC...
  5. zhyfly@zhyfly:~/bash$ sed -e 's/^[^A]*A/A/g' 1
  6. ABC...
  7. ABC...
  8. ABC...
  9. zhyfly@zhyfly:~/bash$
复制代码

/^[^A]*A/A/
也就是说相当于把 开头不是A到A的字符段 用 A 替换!
回复 支持 反对

使用道具 举报

发表于 2005-4-14 12:05:44 | 显示全部楼层
这是一个办法。怎么才能表达到某一个特定字符(或字符串)之前的任何字符。在这个例子中就是直接删除掉A前面的字符?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-14 12:39:03 | 显示全部楼层
To kiron:
awk固然可以,但这是个问题,遇到几次了,总不能再回避了.
To zhy2111314, troll:
嗯,这个办法可以,但也不算是RE描述到的确切位置吧.不知道RE能不能描述这个情况呢>?
回复 支持 反对

使用道具 举报

发表于 2005-4-14 12:59:25 | 显示全部楼层
  1. zhyfly@zhyfly:~/bash$ cat 1
  2. xasdfasfABC...
  3. 2132ABC...
  4. xxxxABC...
  5. zhyfly@zhyfly:~/bash$ awk -F"ABC" '{print $1,$2}' 1
  6. xasdfasf ...
  7. 2132 ...
  8. xxxx ...
  9. zhyfly@zhyfly:~/bash$ cat 1
  10. xasdfasfABC...
  11. 2132ABC...
  12. xxxxABC...
  13. zhyfly@zhyfly:~/bash$ awk -F"ABC" '{if($1!="")$1="";printf ("%s%s\n","ABC",$2)}' 1
  14. ABC...
  15. ABC...
  16. ABC...
  17. zhyfly@zhyfly:~/bash$
复制代码


可以用其中的$1代替,如果不行再想想......
回复 支持 反对

使用道具 举报

发表于 2005-4-14 14:44:33 | 显示全部楼层
在vim里应该是这样:

%s/^.*\(ABC.*\)/\1/g
回复 支持 反对

使用道具 举报

发表于 2005-4-14 20:03:22 | 显示全部楼层
  1. zhyfly@zhyfly:~/bash$ cat 1
  2. xasdfasfABC...
  3. 2132ABC...
  4. xxxxABC...
  5. zhyfly@zhyfly:~/bash$ sed -e 's/^.*\(ABC.*\)/\1/g' 1
  6. ABC...
  7. ABC...
  8. ABC...
  9. zhyfly@zhyfly:~/bash$
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表