1 0 1 2 0 3 2 1 2 3 0 3 4 0 1 4 1 1 4 2 1 4 3 1 5 0 1 8 0 1 10 0 1 11 0 1
RS分隔符默认为空行。
如果有两条空白线,我们不得不以$1 0 0的模式替代它们,其中$1表示$1 0 *logging之前增加的“数字”。
如果分隔符是empty line + 1 empty line我们必须增加1美元。如果分隔符是empty line + 2 empty line我们必须增加1美元2. …
如何使用多个(嵌套)分隔符从文本中提取值
强制从cut命令输出字段的顺序
需要将下面的awk命令转换成sed
脚本,UNIX,比较
我如何在Perl中使用粘贴和awk?
我需要得到这个输出:
1 0 1 2 0 3 2 1 2 3 0 3 4 0 1 4 1 1 4 2 1 4 3 1 5 0 1 6 0 0 7 0 0 8 0 1 9 0 0 10 0 1 11 0 1
提前致谢!
Shell脚本 – 将xml分成多个文件
如何使用AWK从string中删除所有小写字符?
从UTC转换到时代shell脚本或awk
如何删除基于列值的重复行?
你可以尝试这样的事情。 这种方式的好处是你的输入文件不需要有一个空行缺少的数字。
awk -v RS="" -v ORS="nn" -v OFS="n" ' BEGIN{getline; col=$1;line=$0;print line} $1==col{print $0;next } ($1==col+1){print $0;col=$1;next} {x=$1;y=$0; coL++; while (col < x) {print col" 0 0";coL++};print y;next}' file
输入文件:
[jaypal:~/Temp] cat file 1 0 1 2 0 3 2 1 2 3 0 3 4 0 1 4 1 1 4 2 1 4 3 1 5 0 1 8 0 1 10 0 1 11 0 1
脚本输出:
[jaypal:~/Temp] awk -v RS="" -v ORS="nn" -v OFS="n" ' BEGIN{getline; col=$1;line=$0;print line} $1==col{print $0;next } ($1==col+1){print $0;col=$1;next} {x=$1;y=$0; coL++; while (col < x) {print col" 0 0";coL++};print y;next}' file 1 0 1 2 0 3 2 1 2 3 0 3 4 0 1 4 1 1 4 2 1 4 3 1 5 0 1 6 0 0 7 0 0 8 0 1 9 0 0 10 0 1 11 0 1
awk 'NF{f=0;n=$1;print;next}f{print ++n " 0 0"}{print;f=1}' ./infile
产量
$ awk 'NF{f=0;n=$1;print;next}f{print ++n " 0 0"}{print;f=1}' ./infile 1 0 1 2 0 3 2 1 2 3 0 3 4 0 1 4 1 1 4 2 1 4 3 1 5 0 1 6 0 0 7 0 0 8 0 1 9 0 0 10 0 1 11 0 1
说明
NF{f=0;n=$1;print;next} :如果当前行有数据,取消设置标志f ,将第一个字段中的数字保存为n ,打印该行并跳过脚本的其余部分
{print;f=1} :如果当前行是空白的,我们只能达到这个动作。 如果是这样,打印行并设置标志f
f{print ++n " 0 0"} :我们只执行这个动作,如果标志f被设置,只有当前一行是空白时才会发生。 如果我们输入这个动作,用一个递增的n打印缺少的字段
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。