我有一个制表符分隔的文件,包含 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
答案1
你可以这样做:
perl -i -pe 's/,(\t|$)/$1/g' file
这将删除所有逗号后跟空格、制表符或换行符。
对于其他字段分隔符,例如:
,请使用:
perl -i -F: -lane 's/,$// for @F; print join ":",@F' file
这些命令将更改原始文件,先删除-i
测试一下。
答案2
答案3
这里有一些很棒的环视内容..
perl -i -pe 's/,(?=\t|$)//g' file
或者
perl -i -pe 's/,(?!\S)//g' file
或者
使用非字边界..
perl -i -pe 's/,\B//g' file