0

そのような行を含むテキストファイルで

%12/29/2012%

曜日が含まれるように処理するにはどうすればよいですか?

%12/29/2012 sat%

sedトリックを行うことができますか?sed多分との組み合わせを使用していdateますか?

すべての行がこのような日付であるとは限らないことに注意してください。日付はマーカーです。

4

3 に答える 3

1
perl -MPOSIX -pe 's{%(\d{2})/(\d{2})/(\d{4})%}{strftime "%%%m/%d/%Y %a%%",0,0,0,$2,$1-1,$3-1900}ge' file
于 2012-12-29T18:03:24.070 に答える
1
cat file | while read a; do date --date=$(echo "$a" | tr -d '%') +"%x %a"; done

次に、次のコマンドでパーセント記号を追加します。

$ sed 's/.*/%&%/' file

編集:

日付ではない行をスキップしたい場合は、次のような if-else ステートメントを追加する必要があります。

$ cat file | while read a; do if [[ $a == %*% ]]; then date --date=$(echo "$a" | tr -d '%') +"%x %a"; else echo "$a"; fi; done
于 2012-12-29T04:53:01.067 に答える
1

がある場合はGNU awk、次を試すことができます。

awk '(x = mktime(gensub(/%(..)\/(..)\/(....)%/, "\\3 \\1 \\2 0 0 0", ""))) != -1 { print strftime("%%%m/%d/%Y %a%%", x); next }1' file

テスト:

の内容file:

%12/29/2012%
wtf
%12/30/2012%

結果:

%12/29/2012 Sat%
wtf
%12/30/2012 Sun%
于 2012-12-29T05:24:00.860 に答える