1

私のファイルには、次の形式のデータが含まれています。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

ありがとうジテンドラ

4

6 に答える 6

3

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
于 2013-01-08T02:20:32.503 に答える
2

使用:

sed 's/T[^,]*//g' input_file

出力:

1,2,2012-04-11,2012-04-11
于 2013-01-08T02:19:56.380 に答える
0

T最初の2つのフィールドにはが含まれている可能性があるため、 :awkよりも適切な選択です。sed

awk -F, '{sub("T.*","",$3); sub("T.*","",$4); print}' OFS=, input_file
于 2013-01-08T03:16:03.020 に答える
0

1 つの可能性は、perl を使用してこれを解決することです (環境で使用できる場合)。

perl -pe 's/^(\d+),(\d+),(.*)T.*,(.*)T.*/\1,\2,\3,\4/' < yourfile
于 2013-01-08T02:16:15.547 に答える
0
perl -F, -ane '$F[3]=~s/T.*//g;$F[2]=~s/T[^,]*//g;print join ",",@F;' your_file
于 2013-01-08T10:06:48.120 に答える
0

コンマと "T" の両方をフィールド セパレータとして使用します。次に、$4$6は時間フィールドです。その後、不要なフィールドを破棄できます

awk -F '[,T]' -v OFS=, '{print $1,$2,$3,$5}' 
于 2013-01-08T15:14:58.127 に答える