
カンマで区切られた2〜6個のフィールドを表示する一意の列を含むテキストファイル(約300,000行)があります。
A,BB,CC
EF,GHI,DKLM,OP
Q,RS,TUV
W,XY
私が達成したいもの:
A,B,C
EF,HI,KLM,P
Q,S,UV
W,Y
つまり、各行の各カンマの後の最初の文字を削除したいと思います。
あなたの時間と助けに感謝します。ありがとう、
ローラン
答え1
$ cat file
A,BB,CC
EF,GHI,DKLM,OP
Q,RS,TUV
W,XY
$ sed 's/,./,/g' file
A,B,C
EF,HI,KLM,P
Q,S,UV
W,Y
正規表現は、,.
リテラルコンマの後に他の文字が続くものと一致します。このsed
式は、s/,./,/g
各コンマとそれに続く文字をコンマだけで置き換えて、他の文字を効果的に削除します。すべての行で重複しないすべての項目を置き換えます。
出力を新しいファイルにリダイレクトするか、適切に一緒に使用しますsed
(参照-i
sed -i(所定の位置で編集)を使用して移植性を達成するには?)。