web-dev-qa-db-ja.com

.CSVファイルのいくつかの列からアポストロフィ( ')を削除する方法は?

7つのフィールドを持つ.CSVファイルがあり、ファイルの3番目と4番目の列にはアポストロフィ( ')で始まる番号があります。以下の例をご覧ください。

col0,col1,col2,col3,col4,col5,col6,
1value0,1value1,'8972991766941,'8972991766941,1value4,1value5,1value6,
2value0,2value1,'8912988876583,'8912988876583,2value4,2value5,2value6,
3value,3value1,'8912981226981,'8912981226981,3value4,3value5,3value6,
2value0,4value1,'8912971783681,'8912971783681,4value4,4value5,4value6,

Sedまたはawkのいずれかのみを使用して、3番目と4番目の列のアポストロフィを取り除くにはどうすればよいですか?

4
Dhruuv

awkでそれを行うことができます。アイデアは、列3および4で sub stituteコマンドを実行して、単一引用符を空白に置き換えることです。ここで、\047'の8進コードを表します。

 awk -F, -v OFS=, '{sub(/\047/, "", $3); sub(/\047/, "", $4); print}' file.txt
5
iruvar

他の引用クォーラクターを使用する

sed "s/'//g" file

または引用を終了し、アポストロフィをエスケープして、もう一度引用を開始します

sed 's/'\''//g' file

この場合、シェルにとって特別な意味を持つアポストロフィを除いて、引用符は必要ありません。

sed s/\'//g file

これは二重引用符を使用して行うこともできます

sed s/"'"//g file

この投稿へのコメントを読んだ後、私は元の質問を解決しなかったが、OPのコメントでコマンドポストを修正したことに気付きました。

2
miracle173