如何使用bash格式化下面记录之间的空格:
123 sample file 456
894 sample files 789
到
123 sample file 456
894 sample files 789
,其中
123 <3spaces> sample <4spaces> file <7spaces> 456
894 <3spaces> sample <4spaces> files <6spaces> 789
答案 0 :(得分:4)
您可以使用带有printf
的awk执行此操作。要左对齐列,可以在格式说明符中使用减号:
awk '{printf "%-6s%-10s%-11s%s\n", $1,$2,$3,$4}' file
负数指定每列的宽度,但填充位于右侧,而不是左侧。
输出:
123 sample file 456
894 sample files 789
实际上,您可以使用内置printf
和read
的bash或多或少完全相同的方式执行此操作:
while read -ra cols; do printf "%-6s%-10s%-11s%s\n" "${cols[@]}"; done < file
-a
切换到read
表示将列读入数组。