当前位置:  操作系统/服务器>linux

sed或awk处理文件最后一行的实现方法

    来源: 互联网  发布时间:2014-10-13

    本文导语:  有如下的文本:abcd 1234 fds2011 5501023 832er 1231 要求处理后如下所示:abcd 1234 fds2011 550total1:1023 total2:832er 12end 判断如果是文本最后一行则在第一列前面加total1:,第二列加total2:, 第三列后面减掉后面两个字符并加end。 分别用sed与awk...

有如下的文本:
abcd 1234 fds
2011 550
1023 832er 1231

要求处理后如下所示:
abcd 1234 fds
2011 550
total1:1023 total2:832er 12end

判断如果是文本最后一行则在第一列前面加total1:,第二列加total2:, 第三列后面减掉后面两个字符并加end。

分别用sed与awk来实现。
sed:

代码如下:

echo 'abcd 1234 fds
2011 550
1023 832er 1231' |sed -r '$s/([^ ]*)( )([^ ]*)( )(..).*$/total1:12total:345end/'

abcd 1234 fds
2011 550
total1:1023 total:832er 12end

awk:

代码如下:

awk 'NR>1{print a}{a=$0}END{$1="total1:"$1;$2="total2:"$2;print gensub(/..$/,"end",$0)}' file
awk 'BEGIN{getline a}{print a;a=$0}END{$1="total1:"$1;$2="total2:"$2;$3=gensub(/..$/,"end",1,$3);print}'
awk '{if(!getline line){print "total1:"$1" total2:"$2" "gensub(/..$/,"end",1,$3)}else{print line?$0 RS line:$0}}'

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用Sed处理后的结果给数组赋值的问题
  • sed 脚本求助:变量中含有转义字符处理
  • sed命令对xml格式配置文件无法处理??
  • linux下利用(cat,strings,head,sed)命令生成随机字符串
  • pwd|sed 's//cygdrive/([a-z])/1:/' | sed 's///#/g'`\/(pwd代表绝对地址)这个sed又是什么
  • 在循环中使用sed,为什么sed不被执行
  • 请问 ls *.IMG | sed s/.IMG// > cube.lis 中的 | sed s/.IMG// 参数是什么意思?
  • sed n 模式替换中正则表达式获取值问题(sed 高手帮帮忙!!)
  • sed 的简单问题, sed初学, 脚本高手进。先谢了
  • sed变量的用法
  • 求住,sed命令
  • 关于sed脚本,高手快来解答
  • sed问题。。。对高手来说easy。。。
  • 求助:这个sed命令是什么意思?
  • sed linux 这句话什么 意思?
  • shell中的sed引入变量问题
  • 关于sed的正则表达式
  • sed -i 修改文件内容
  • 【sed】简单匹配
  • (急)shell,sed 关于参数的传递
  • | sed 's/^/\ /' > 是啥意思啊
  • 在线等待,用sed命令如何替换整行?
  • 请教sed awk的用法详解,有命令说明的链接也不错,谢谢了
  • sed /awk 字段截取,Help!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3