Linux
刪除分隔符前的最後一個字元
輸入文件內容如下:
header;header;header;header 2018/06/04;141000;bla;bla
期望的輸出:
header;header;header;header 2018/06/04;1410;bla;bla
我有下面的命令和sed
sed -i 's/.//16' $inputFile
但刪除我的標題,如:
header;hder;header;header 2018/06/04;1410;bla;bla
為避免這種情況,我嘗試這樣做:
tail -n +2 | sed -i 's/.//16' $inputFile
但不工作。提前致謝
使用
awk
:awk -F ';' -v OFS=';' 'NR > 1 { sub("..$", "", $2) }; 1' <"$inputFile"
這將通過
;
從其中刪除最後兩個字元來修改除第一行之外的每一行輸入的第二個分隔欄位。尾隨
1
導致每一行都被輸出(它可以被替換{ print }
)。您可以將其輸出重定向到一個新文件,稍後您可以用該文件替換原始文件。
如果要在第二個分隔符之前刪除兩個字元(並假設在您的範例中,前兩個分隔符之前總是至少有兩個字元),請使用:
sed -i -- '1!s/..;/;/2' "$inputFile"
1!
避免更改標題(第一)行。其餘的刪除分隔符之前的兩個字元
;
。