2016-07-15 66 views
0

后比方说,我有以下文件更换每一个有下划线点,如果空格/换行符不前,

asdfa .a 
xsf. asdfa 
. xasdf 
asdfasfd.sadfa. 
asdfa .a 
xsf. asdfa 
. 3xasdf 
asdfasfd2.sadfa. 

而且,我想这一点:

asdfa .a 
xsf. asdfa 
.xasdf 
asdfasfd_sadfa. 
asdfa .a 
xsf. asdfa 
. 3xasdf 
asdfasfd2_sadfa. 

基本上每个点都有如果满足以下所有条件,则替换为下划线:

  1. 点之前和之后没有空白字符。
  2. 该点不在该行的开头。
  3. 该点不在该行的末尾。

更新: 所以,到目前为止,我只能拿出sed 's/\./_/g'。但是,这取代了每一个点。

+0

那么你尝试过这么远吗?这个网站是为编程问题,而不是转储您的待办事项列表的地方。你展示了一些代码,我们(可能)尝试帮助解决它。我们不在这里为你做你的工作。 –

回答

2

这里sed眼前一亮

$ sed -r 's/(\S)\.(\S)/\1_\2/g' file 
+0

我建议你使用'-E'选项,它更便于携带。 –

1

我想这应该做的伎俩

sed -i 's/\(\w\)\(\.\)\(\w\)/\1_\3/g' mytextfile.txt 
+0

不错,但你可以启用扩展正则表达式。 –

相关问题