我知道如何使用awk的printf函数,但是我不想指定每个字段。
例如,假设这是我的文件:
c1|c2|c3|c4|c5
c6|c7|c8|c9|c10
c11|c12|c13|c14|c15
我想对其进行格式化,以便每个记录的第一个字段是c11的宽度-第一个字段中最长的单元格:
c1 |c2|c3|c4|c5
c6 |c7|c8|c9|c10
c11|c12|c13|c14|c15
我了解我可以指定:
awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile
假设我知道我希望第一列的宽度是多少,但是我不知道文件中有多少个字段。基本上我想做这样的事情:
... '{printf "%-3s|", $1}'
...,然后以其原始格式打印其余字段。
sed 's/|/'' '' '' |/;s/\(...\) */\1/'
(可以添加额外的报价插入这3个空格作为SE意见挤连续的空格为一个)