我文件的每一行(titi / toto / tata)有2或3个以“;”分隔的字段
所以我的输入是这样的:
titi1titi2 titi343;75;971;2;87toto1toto2toto340;50;60tata1tata2tata34;5;25;3;72;5;9
我需要这个输出:
titi1;titi2;titi3;43;75;97titi1;titi2;titi3;1;2;87toto1;toto2;toto3;40;50;60tata1;tata2;tata3;4;5;2tata1;tata2;tata3;5;3;7tata1;tata2;tata3;2;5;9
那么你可以看到前3行是信息(toto / tata等…),应该在数字开始后为每一行重复这些信息.
首先,我的输入只有一行数字,所以它是一个4乘4的分组.所以我在论坛搜索了我找到了一个例子并用这样的getline做了这个:
awk '{getline b; getline c; getline d;printf("%s %s %s %s\n",awk 'f&&/^[^0-9]/{b="";f=0} /^[^0-9]/{b=b,b,c,d)}'1. /^[^0-9]/{b=b";"} 2. /^[0-9]/{print b;f=1} 3. f&&/^[^0-9]/{b="";f=0}";"} /^[0-9]/{print b;f=1}'
但后来我开始有2个甚至3个数字…
因此,我正在努力做一个“条件”,理解它应该重复前3个lign,每当它看到一个从数字开始的lign.
说明:
>行不以数字开头:收集输入(titi,toto,tata)>行以数字开头:打印收集的行和$0,设置标志> line不再以数字开头(标志已设置):重启(清除缓冲区和标志)
总结以上是内存溢出为你收集整理的使用awk / tr / sed进行bash conditionnal getline?全部内容,希望文章能够帮你解决使用awk / tr / sed进行bash conditionnal getline?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)