私のファイルには、次の形式のデータが含まれています。3 番目と 4 番目のフィールドは日付です。これらのフィールドの日付部分だけを保持し、時間部分を削除したいと考えています。2 番目の小数は常に ".0Z" です。
入力:
1,2,2012-04-11T00:06:52.0Z,2012-04-11T00:06:52.0Z
出力:
1,2,2012-04-11,2012-04-11
ありがとうジテンドラ
sed
次のように使用できます。
sed 's/T[^,]*//g' file
またはawk
:
awk '{ gsub(/T[^,]*/,"") }1' file
または、最初の 2 つのフィールドに文字「T」を含めることができる場合:
sed 's/\([^,]*,[^,]*,[^T]*\)[^,]*\([^T]*\).*/\1\2/' file
またはawk
:
awk -F, '{ sub(/T.*/,"",$3); sub(/T.*/,"",$4) }1' OFS=, file.txt
結果:
1,2,2012-04-11,2012-04-11
T
最初の2つのフィールドにはが含まれている可能性があるため、 :awk
よりも適切な選択です。sed
awk -F, '{sub("T.*","",$3); sub("T.*","",$4); print}' OFS=, input_file
1 つの可能性は、perl を使用してこれを解決することです (環境で使用できる場合)。
perl -pe 's/^(\d+),(\d+),(.*)T.*,(.*)T.*/\1,\2,\3,\4/' < yourfile
perl -F, -ane '$F[3]=~s/T.*//g;$F[2]=~s/T[^,]*//g;print join ",",@F;' your_file
コンマと "T" の両方をフィールド セパレータとして使用します。次に、$4
と$6
は時間フィールドです。その後、不要なフィールドを破棄できます
awk -F '[,T]' -v OFS=, '{print $1,$2,$3,$5}'