【问题标题】:Need to print all the records from the text files including the ones that are affected in AWK需要打印文本文件中的所有记录,包括在 AWK 中受影响的记录
【发布时间】:2017-05-11 23:49:12
【问题描述】:
awk '{printf "%-80s %-5s %-50s %-10s %-2s %-10s %-10s %-30s %-9s %-40s %-22s %-12s %-18s", $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $24, $25, $26}1' FS='|' OFS="\t" $path/datafile_1.txt > $path/datafile_2.txt

我有一个以竖线分隔的文本文件作为输入,其中包含某些列,这些列必须根据分配给每个字段的空间来指定。从上面的代码中可以看出,我想以制表符分隔格式打印所有列。 但是当我运行这段代码时,它只输出 13 中的所有列。在第 26 列的末尾,它打印所有列,因为我在末尾给出了 1。 我认为 1 对于以制表符限制格式打印所有列很有用,但它对我没有帮助。 有人有什么建议吗?

【问题讨论】:

  • edit 您的问题包括简洁、可测试的样本输入和预期输出。我们确实不需要需要看到或听到任何包含 26 列的内容来解释和展示您的问题 - 将其减少到大约六列。

标签: bash unix awk


【解决方案1】:

我想你想要的是

awk -F\| '{for(i=1;i<=12;i++) printf "%s\t", $i; 
           printf "%-80s\t%-5s\t...%-18s\n", $13, $14, ..., $26 }' file > output

填写...,注意格式字符串中的\t\n

【讨论】:

    猜你喜欢
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    相关资源
    最近更新 更多