我有數十萬個檔案,每個檔案都有數十萬行。
2022-09-19/SALES_1.csv:CUST1,US,2022-09-19,43.31,17.56,47.1,154.48,154. 114
2022-09-20/SALES_2.csv:CUST2,NA,2022-09-20,12.4,16.08,48.08,18.9,15.9,3517
這些行可能有不同數量的欄位。無論存在多少欄位,我都只想提取最后 7 個欄位。
我正在嘗試使用 cut & awk 但是,只能對一系列欄位進行 prit,但不能對最后一個“n”個欄位進行排序。
請問我可以請求指導。
uj5u.com熱心網友回復:
$ rev file | cut -d, -f1-7 | rev
無論每條記錄中的欄位數量如何,都會給出最后 7 個欄位。
uj5u.com熱心網友回復:
使用任何 POSIX awk:
$ awk -F',' 'NF>7{sub("([^,]*,){"NF-7"}","")} 1' file
US,2022-09-19,43.31,17.56,47.1,154.48,154. 114
2022-09-20,12.4,16.08,48.08,18.9,15.9,3517
uj5u.com熱心網友回復:
1 {m,g}awk' BEGIN { _ =(_ =_^= FS = OFS = ",") _
2 ___= "^[^"(__= "\5") ("]*")__
3
4 } NF<=_ || ($(NF-_) = __$(NF-_))^(sub(___,"")*!_)'
US,
2022-09-19,
43.31,
17.56,
47.1,
154.48,
154. 114
2022-09-20,
12.4,
16.08,
48.08,
18.9,
15.9,
3517
uj5u.com熱心網友回復:
在純 Bash 中,沒有任何外部行程和/或管道:
(IFS=,; while read -ra line; do printf '%s\n' "${line[*]: -7}"; done;) < file
uj5u.com熱心網友回復:
列印最后 7 個欄位:
sed -E 's/.*,((.*,){6}.*)/\1/' file
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/520113.html
標籤:重击awk切
上一篇:Ping重啟腳本丟包百分比
