我需要将分隔文件转换为固定宽度文件,详情如下。
输入文件示例:
AAA|BBB|C|1234|56
AA1|BB2|DD|12345|890
输出文件示例:
AAA BBB C 1234 56
AA1 BB2 DD 12345 890
现场职位详情
答案 0 :(得分:0)
使用以下awk
命令,您可以实现目标:
awk 'BEGIN { RS=" "; FS="|" } { printf "%5s%6s%4s%6s%3s\n",$1,$2,$3,$4,$5 }' your_input_file
您的记录分隔符(RS
)是一个空格,您的字段分隔符(FS
)是一个管道(|
)字符。为了正确地解析数据,我们在BEGIN
语句中设置它们(在读取任何数据之前)。然后使用printf
和所需的格式字符,我们以所需的格式输出数据。
<强> 输出: 强>
AAA BBB C 1234 56
AA1 BB2 DD 12345890
<强> 更新 强>
我刚刚看到您对输入文件格式的编辑(以前它们看起来不同)。如果您的输入数据记录使用新行分隔,则只需从上面的单行中移除RS=" ";
部分,然后对格式字符应用-
修饰符以对齐您的字段:
awk 'BEGIN { FS="|" } { printf "%-5s%-6s%-4s%-6s%-3s\n",$1,$2,$3,$4,$5 }' your_input_file
答案 1 :(得分:0)
另一个awk
解决方案:
echo -e "AAA|BBB|C|1234|56\nAA1|BB2|DD|12345|890" |
awk -F '|' '{printf "%-5s%-6s%-4s%-6s%-3s\n",$1,$2,$3,$4,$5}'
请注意printf语句中-
之前的%-3s
,它会根据问题的要求左对齐字段。输出:
AAA BBB C 1234 56
AA1 BB2 DD 12345 890