好吧所以这是我下一个文件的问题所以我试图找出如何格式化我创建的文件,其中包含我需要的所有信息,但我需要更改输出看起来如此
cat file
Jackson D. Bob 0001 book pizza apple 4.00 123as Filer J. Jake 0002 happy apple hat 4.00 124ab Metro K. Jim 0003 kindle pizza grape 4.00 125ac
好吧那就像文件中的whats然后我需要将输出格式化为这样的
# name LS item1 item2 item3 point ad
- -------------- ---- ------ -------- ------ ----- -----
1 Jackson D. Bob 0001 book pizza apple 4.00 123as
2 Filer J. Jake 0002 happy apple hat 4.00 124ab
3 Metro K. Jim 0003 kindle pizza grape 4.00 125ac
现在我用cat文件尝试了一些不同的东西awk' printf {}' 命令,但它只是打印第一行并失败或将尝试打印第一个名称,然后它下面的每个项目不是在这个表样式
现在记住项目,左边的数字是用循环生成的,然后#Name LS打印到与破折号相同的位置
答案 0 :(得分:2)
使用GNU awk进行多字符RS和RT:
$ awk -v RS='[0-9]{3}[[:alpha:]]{2}[[:blank:]]*' 'RT{print NR, $0 RT}' file
1 Jackson D. Bob 0001 book pizza apple 4.00 123as
2 Filer J. Jake 0002 happy apple hat 4.00 124ab
3 Metro K. Jim 0003 kindle pizza grape 4.00 125ac
答案 1 :(得分:1)
就我而言
$ sed -r 's/[0-9]+[a-z]+ /&\n/g' data_on_a_single_line | column -t
Jackson D. Bob 0001 book pizza apple 4.00 123as
Filer J. Jake 0002 happy apple hat 4.00 124ab
Metro K. Jim 0003 kindle pizza grape 4.00 125ac
您可以根据字段长度添加魔术标题和下划线,也可以合并awk