Text-Processing

如果文件在末尾,則從文件中的列中刪除逗號

  • September 20, 2015

我有一個製表符分隔的文件包含 19 列,其中一些列末尾包含逗號。如果它在最後,我想從所有列中刪除這些逗號。例子:

c1   c2   c3   c4   c5  
re,  f,f   d,f,  gf   mk
df   df,  df   dl,  df,

結果應該和保存在同一個文件中

c1   c2    c3    c4   c5  
re   f,f   d,f   gf   mk
df   df    df    dl   df

你可以這樣做:

perl -i -pe 's/,(\t|$)/$1/g' file

這將刪除任何逗號,後跟空格、製表符或換行符。

對於其他欄位分隔符,例如:,使用:

perl -i -F: -lane 's/,$// for @F; print join ":",@F' file

這些命令將更改原始文件,刪除-i以首先對其進行測試。

要刪除每個欄位末尾的單個逗號:

perl -i -pe 's/,(\t|$)/$1/g' myfile

(\t|$)匹配製表符或行尾。用給定的替換文本(這裡,,表示括號內的模式部分)替換s/…/…/g模式的每個出現(這裡, )。不以逗號結尾的欄位與模式不匹配,因此無需修改即可列印出來。,(\t|$)``$1

-p選項指示 Perl 將給定的表達式應用於每個輸入行並列印出修改後的行。該-i選項導致輸入文件被結果輸出替換。

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