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番目の列のアポストロフィを取り除くにはどうすればよいですか?
awk
でそれを行うことができます。アイデアは、列3および4で sub stituteコマンドを実行して、単一引用符を空白に置き換えることです。ここで、\047
は'
の8進コードを表します。
awk -F, -v OFS=, '{sub(/\047/, "", $3); sub(/\047/, "", $4); print}' file.txt
他の引用クォーラクターを使用する
sed "s/'//g" file
または引用を終了し、アポストロフィをエスケープして、もう一度引用を開始します
sed 's/'\''//g' file
この場合、シェルにとって特別な意味を持つアポストロフィを除いて、引用符は必要ありません。
sed s/\'//g file
これは二重引用符を使用して行うこともできます
sed s/"'"//g file
この投稿へのコメントを読んだ後、私は元の質問を解決しなかったが、OPのコメントでコマンドポストを修正したことに気付きました。