[英]linux/unix convert delimited file to fixed width
我需要將定界文件轉換為定寬文件,詳細信息如下。
輸入文件樣本:
AAA|BBB|C|1234|56
AA1|BB2|DD|12345|890
輸出文件樣本:
AAA BBB C 1234 56
AA1 BB2 DD 12345 890
現場職位詳情
使用以下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
另一個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
之前的-
%-3s
問題的要求將字段左對齊。 輸出:
AAA BBB C 1234 56
AA1 BB2 DD 12345 890
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.