时间:2021-05-22
有如下的文本:
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:\1\2total:\3\4\5end/'
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}}'
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
linux的sed工具是十分强大的,能很容易的实现在某关键词的前一行或后一行增加内容。今天在批量修改tomcat的日志时就用到了该功能。一、在某行的前一行或后一
一、Sed简介Sed:StreamEditor流式编辑器又称行编辑器,每次只编辑一行。Sed工作是在“模式空间”中进行的,并不操作源文件
首先,你需要先了解awk的工作原理:1。AWK读取输入文件一次一行。2。对于每一行,它匹配在给定的顺序模式,如果匹配,执行相应的动作。3。如果没有模式匹配,将执
sed命令作为一个强大的shell命令,可以快速删除任意特定的行列,配合awk命令可以轻松地操作批量处理文件,下面就来看看吧!sed命令常用到的两个选项:-i:
两种方法实现:1)一行一行的读取aspx文件然后处理2)一次性读取aspx文件然后处理处理逻辑:替换""为""(将两个空格替换为一个空格),将所有的换行符替换为