免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2561 | 回复: 14
打印 上一主题 下一主题

如何替换特定列中的字符? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-07-10 19:16 |只看该作者 |倒序浏览
例:
     11111   aaaa   bbbbb   11111000011  2222
     11303   aaaa   bbbbb   11111111111  0000
     11111   aaaa   bbbbb   11111000011  2112
     11111   aaaa   bbbbb   11000001011  2222
     
      要求把第四域中的1都替换成0.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-07-10 20:43 |只看该作者

如何替换特定列中的字符?

  1. awk '{$4="00000000000";print $0}' filename
  2. 11111 aaaa bbbbb 00000000000 2222
  3. 11303 aaaa bbbbb 00000000000 0000
  4. 11111 aaaa bbbbb 00000000000 2112
  5. 11111 aaaa bbbbb 00000000000 2222
复制代码
   
即使是这样,我在SUN OS 5.8下输出也不行,只输出了一个0,用printf可以了~~嘿嘿,不过我第一感觉也是这么做的~~

论坛徽章:
0
3 [报告]
发表于 2003-07-10 22:14 |只看该作者

如何替换特定列中的字符?

[quote]原帖由 "admirer"][/quote 发表:
     
   
       没这么简单啊~
  
      第四域列中的字符不相同呢?
                        长度不相同呢?
      如 1111 aaaa bbbbb 11111000011 2222
          113    aaaa bbbbb 1110789011   0000
         11111 aaaa bbbbb 11112380011 2112
         11111 aaaa bbbbb 115013786    2222

                                     请指教![/code]

论坛徽章:
0
4 [报告]
发表于 2003-07-10 22:25 |只看该作者

如何替换特定列中的字符?

笨鸟来个笨的
#!/bin/ksh
awk '{print $4}' file |sed 's/1/0/g' > file1
paste file file1 |awk '{print $1,$2,$3,$6,$5}'  > file2
mv file2 file
rm file1

论坛徽章:
0
5 [报告]
发表于 2003-07-10 23:00 |只看该作者

如何替换特定列中的字符?

$> perl -e 'while(<>{chomp; split;@_[3] =~ s/0/1/g; $r=join " ",@_ ;print "$r\n"}' filename

论坛徽章:
0
6 [报告]
发表于 2003-07-11 07:48 |只看该作者

如何替换特定列中的字符?

原帖由 "grljt" 发表:
笨鸟来个笨的
#!/bin/ksh
awk '{print $4}' file |sed 's/1/0/g' > file1
paste file file1 |awk '{print $1,$2,$3,$6,$5}'  > file2
mv file2 file
rm file1
   
借用一下grljt的一句话~~~
awk '{print $4}' urfile |sed 's/1/0/g' >newfile

论坛徽章:
0
7 [报告]
发表于 2003-07-11 08:07 |只看该作者

如何替换特定列中的字符?

原帖由 "anonimousboy" 发表:
   
借用一下grljt的一句话~~~
awk '{print $4}' urfile |sed 's/1/0/g' >newfile


   那个截出特定域,替换以后再合并,我本来也是这样做的,
     
   请问,不产生那些中间文件,来实现行吗?

论坛徽章:
0
8 [报告]
发表于 2003-07-11 08:12 |只看该作者

如何替换特定列中的字符?

原帖由 "hp_unix" 发表:


   那个截出特定域,替换以后再合并,我本来也是这样做的,
     
   请问,不产生那些中间文件,来实现行吗?
   
awk和sed只是对文件进行读操作,然后输出到标准输出,如果不用临时文件我也不知道怎么做~~

论坛徽章:
0
9 [报告]
发表于 2003-07-11 09:13 |只看该作者

如何替换特定列中的字符?

原帖由 "hp_unix" 发表:


   那个截出特定域,替换以后再合并,我本来也是这样做的,
     
   请问,不产生那些中间文件,来实现行吗?

It seems that, if I don't quote __code__ , the script cannot run....?
One line version:
  1. perl -e 'while(<>){chomp; split;@_[3] =~ s/0/1/g; $r=join " ",@_ ;print "$r\n"}' FILENAME
复制代码


Multi line version

  1. #!/usr/bin/perl
  2. #c4.pl
  3. while(<>)
  4. {
  5.         chomp;
  6.         split;
  7.         @_[3] =~ s/0/1/g;
  8.         $r=join " ",@_ ;
  9.         print "$r\n"
  10. }
复制代码

./c4.pl FILENAME

RESULT:
before

  1. cat origin
  2. 1111 aaaa bbbbb 11111000011 2222
  3. 113 aaaa bbbbb 1110789011 0000
  4. 11111 aaaa bbbbb 11112380011 2112
  5. 11111 aaaa bbbbb 115013786 2222
复制代码


after

  1. perl -e 'while(<>) { chomp; split; @_[3] =~ s/0/1/g; $r=join " ",@_ ; print "$r\n" }' origin
  2. 1111 aaaa bbbbb 11111111111 2222
  3. 113 aaaa bbbbb 1111789111 0000
  4. 11111 aaaa bbbbb 11112381111 2112
  5. 11111 aaaa bbbbb 115113786 2222
复制代码

论坛徽章:
0
10 [报告]
发表于 2003-07-11 10:01 |只看该作者

如何替换特定列中的字符?

[quote]原帖由 "powerplane"][/quote 发表:
     


     perl 语言在我的unix机子里还没有.
     
        谢谢powerplane
        谢谢各位大侠~!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP