Text-Processing
減少分隔文本文件中特定列的長度
我需要將分隔文本文件中的第 5 列減少到前 5 個字元。所有其他列必須保持未經編輯。
輸入:
file1.txt column1 column2 column3 column4 column5 123456789 123456789 123456789 123456789 123456789
我希望輸出看起來像:
output.txt column1 column2 column3 column4 column5 123456789 123456789 123456789 123456789 12345
注意:我碰巧使用逗號作為分隔符。
如果
file.csv
看起來像這樣:123456789,123456789,123456789,123456789,123456789 123456789,123456789,123456789,123456789,223456789 123456789,123456789,123456789,123456789,323456789 123456789,123456789,123456789,123456789,423456789
然後,你可以這樣做:
$ awk -F, '{print $1","$2","$3","$4","substr($5,1,5) }' file.csv 123456789,123456789,123456789,123456789,12345 123456789,123456789,123456789,123456789,22345 123456789,123456789,123456789,123456789,32345 123456789,123456789,123456789,123456789,42345
如果所有值都很簡單(值中沒有引號和換行符)並且它們是逗號分隔的,例如:
123456789,123456789,123456789,123456789,123456789
如果一行總是有 5 個這樣的值,您可以使用
sed
:sed '2,$s/\(.*\),\(.*\),\(.*\),\(.*\),\(.....\)\(.*\)/\1,\2,\3,\4,\5/' input
假設您也有一個逗號分隔的
2,$
標題(並且它的第五列不應被截斷),如果不是這種情況,請忽略它。