Chinaunix

标题: 每行空格前加一个\ [打印本页]

作者: ybbdnvjfd    时间: 2012-02-03 12:08
标题: 每行空格前加一个\
各位好:

      file文件内容:

      yadfasf pouiopi
      yidiiaiii fafdasfa
      werwer faadfa
      ifidififid dfdifid fidifdifid
      fidfid fkdfkdkf

file文件中有5800行每行都有一个空格,我想在每行空格前面加一个\请问大家怎么做?实现结果如下:

      yadfasf\ pouiopi
      yidiiaiii\ fafdasfa
      werwer\ faadfa
      ifidififid\ dfdifid\ fidifdifid
      fidfid\ fkdfkdkf


请大家帮忙解决谢谢。
作者: hbmhalley    时间: 2012-02-03 12:20
sed 's/ /\\ /g' file
作者: rebeccaliyu    时间: 2012-02-03 12:33
awk -F' ' '{print $1 "\" $2}'
作者: q369965658    时间: 2012-02-03 13:25
这个方法不错
awk '$1 "\" $2'
作者: ybbdnvjfd    时间: 2012-02-03 13:55
只能将就用,这方法我用过,只是太麻烦,如果我一行有N个空格,你要写N个$n吗
作者: Shell_HAT    时间: 2012-02-03 13:56
  1. awk 'gsub(/ /,"\\ ")' urfile
复制代码
  1. sed 's/ /\\&/' urfile
复制代码

作者: jason680    时间: 2012-02-03 14:04
use awk and set OFS='\ '

$ echo '10 235 1 123
10 234 1 122' | awk -vOFS='\\ ' '{$1=$1}1'
10\ 235\ 1\ 123
10\ 234\ 1\ 122

作者: yangkyo821    时间: 2012-02-03 14:22
也许将每行前后都加上"更好
作者: Shell_HAT    时间: 2012-02-03 15:09
回复 7# jason680
  1. echo '10 235 1 123
  2. 10 234 1 122' | awk -vOFS='\\ ' '$1=$1'
复制代码

作者: yinyuemi    时间: 2012-02-03 15:41
本帖最后由 yinyuemi 于 2012-02-03 15:47 编辑

回复 9# Shell_HAT


    hat兄,“鸡蛋里挑骨头”,如果$1碰巧是0的话会有问题,awk '($1=$1)||1'这样会保险些:wink:
作者: jason680    时间: 2012-02-03 15:55
回复 10# yinyuemi

>> awk '($1=$1)||1'这样会保险些

it will be return to normal with "awk '{$1=$1}1'".
it's short and easy to understand.
   
作者: yinyuemi    时间: 2012-02-03 16:00
回复 11# jason680


    是的,你写的没问题
作者: Shell_HAT    时间: 2012-02-03 16:21
回复 10# yinyuemi


Yes, we never be too careful.
作者: tuzkee    时间: 2012-02-03 16:52
楼上思维挺严密的嘛
作者: xrzs1986    时间: 2012-02-04 00:43
回复 10# yinyuemi


   good~ 习惯很好呵呵~

也可以这样写:NF+=0; $0=$0 也比较保险
作者: lhylhy38    时间: 2012-02-04 13:05
-。-思路就是把 " " 替换成 "\ "  
作者: lastfile    时间: 2012-02-04 16:36
学习awk方法




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