Linux

刪除分隔符前的最後一個字元

  • August 21, 2018

輸入文件內容如下:

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!避免更改標題(第一)行。

其餘的刪除分隔符之前的兩個字元;

引用自:https://unix.stackexchange.com/questions/463706