awk - 重写 AWK 中变量字段的输入行
问题描述
我想重写以下几行(给定 3 行的示例,但它运行了大约 500 行)
sl_no, id, value1, value2, value3, total, invalid, no_option, gross_total
1,1,570,0,0,.......,655,0,1,656
2,2,394,5,24,......,477,0,4,481
3,3,489,9,2,.......,704,0,2,706
作为
sl_no, id, 0, no_option
sl_no, id,loop, value1
sl_no, id,loop, value2
sl_no, id,loop, value3
IE
1,1,0,1
1,1,1,570
1,1,2,0
1,1,3,0
2,2,0,4
2,2,1,394
2,2,2,5
2,2,3,24
3,3,0,2
3,3,1,489
3,3,2,9
3,3,3,2
value_1 到 value_3 是可变的,即它可以是 value_1 到 value_15 或者它可以是 value_1 到 value_8 左右
我尝试使用 AWK,但变量值列表的硬编码是不可管理的
$ awk -F, '{printf("%d,%s,0,%d\n%d,%s,1,%d\n%d,%s,2,%d\n%d,%s,3,%d\n",$1,$2,$(NF-1),$1,$2,$3,$1,$2,$4,$1,$2,$5)}' input.txt > output.txt
解决方案
awk 是一种编程语言,你可以遍历字段。
假设最后四个是固定的,您希望从第三个循环到倒数第四个。
awk -F , '{ printf "%i,%i,%i,%i\n", $1, $2, 0, $(NF-1)
for(i=3; i<NF-4; ++i)
printf "%i,%i,%i,%i\n", $1, $2, i-2, $i }' input.txt >output.txt
推荐阅读
- python - 按日期进行标记化以按主题进行文本分类
- css - 有没有办法通过父 div 来缩放高度和宽度?
- ios - 在 Swift 中以编程方式返回到早期的 UIViewController
- nlp - 如何在 GSDMM 中获取文本属于某个主题的概率?
- python - 在 bash 脚本中从 Python 返回数组值的最佳方法是什么?
- c - CS50 PSet4 - 模糊滤镜,我得到黑色图像作为输出
- reactjs - 如何使用从 createEntityAdapter 生成的 selectById 选择器
- excel - 如何在 Excel 中对所有玩过的 yahtzy 游戏进行“统计”?
- javascript - 如何禁用浏览器的自动完成功能
- javascript - 我需要 Javascript 帮助更新我网页上的访问次数,以跟踪我的 API 上的点击量