Chinaunix

标题: 如何只替换第一个分隔符 [打印本页]

作者: keedor    时间: 2015-01-10 14:46
标题: 如何只替换第一个分隔符
比如文件如下以空格作为分隔符
1 you are a goog man
2 you
3 are a

只想把第一个分隔符替换,因为都以空格作为分隔符的话,后面的都给我分割了
想把它换成
1---you are a good man
2---you
3---you a
这种形式,以方便我后面在java中处理数据
各位大神有什么好的方法么?我已经用java实现了一种,只是想知道Linux下面有没有相应的简单的命令


作者: blackold    时间: 2015-01-10 14:47
回复 1# keedor


    try:
  1. sed 's/ \+/---/;' urfile
复制代码

作者: keedor    时间: 2015-01-10 15:13
非常感谢,测了一下可行
明白sed的用法,以及s/的意思,但为啥只替换了第一个,后面的没替换呢?能方便说明一下么?谢谢啦
回复 2# blackold


   
作者: liion631818    时间: 2015-01-10 15:27
回复 3# keedor


    那是因为你还不明白,s只替换一次,s///g,这样替换全部
作者: keedor    时间: 2015-01-10 16:49
哦,非常感谢,忘了之前看到的用法后面都加了个g的
回复 4# liion631818


   
作者: prcardin    时间: 2015-01-10 16:58
sed 's/ /---/'  test.txt
1---you are a goog man
2---you
3---are a
作者: prcardin    时间: 2015-01-10 17:02
后面的; 有特殊含义么,黑哥
回复 2# blackold


   
作者: liion631818    时间: 2015-01-10 17:17
prcardin 发表于 2015-01-10 17:03
后面的; 有特殊含义么,黑哥
回复 2# blackold


跟c里一样
作者: rdcwayx    时间: 2015-01-10 18:39
  1. $ cat s.rb
  2. f=File.open('infile').read

  3. f.each_line do |line|
  4.    puts line.sub(/ /,"---")
  5. end

  6. $ ruby s.rb
  7. 1---you are a goog man
  8. 2---you
  9. 3---are a
复制代码

作者: blackold    时间: 2015-01-10 21:49
回复 7# prcardin


    分隔符。没有特殊含义,只是习惯了这样写而已。
作者: prcardin    时间: 2015-01-12 17:23
向黑哥看齐
回复 11# blackold


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2