あるディレクトリから別のディレクトリに.csvファイルをコピーする必要があります。その間、日付列である最初の列を2012年4月13日から2012年4月13日まで再フォーマットする必要があります。この単純な変換を実行するためのsed構文は何ですか?私はウェブ上で読んでいるsedのものにひどく混乱しています。
質問する
443 次
3 に答える
2
これまでに何を試しましたか?テストケースとして、次のような小さなものから始めることができます。
echo "13/04/2012;Col2;Col3" | sed -E 's#^([^/]+)/([^/]+)/([0-9]+)(.*)#\3-\2-\1\4#'
s = substitution command
# = start of pattern
^ = start of line
([^/]+)/ = group of all non-/-characters followed by a / (day)
([^/]+)/ = group of all non-/-characters followed by a / (month)
([0-9]+) = group of at least one digit (year)
(.*) = rest of line
# = start of replacement
\3 = backward reference to capture of third group (year)
\2 = backward reference to capture of second group (month)
\1 = backward reference to capture of first group (day)
\4 = backward reference to capture of fourth group (rest of line)
# end of command
于 2012-04-18T20:17:07.203 に答える
1
sed 's|^\([0-9]\+\)/\([0-9]\+\)/\([0-9]\+\)|\3-\2-\1|'
これは、行の先頭( )から始まり、 1つ以上の()番号( )^
を記録し、その後にスラッシュ()、2番目のセットの後に別のスラッシュ、3番目のセットを記録し、記録されたセットを再配置します()ダッシュで区切られます。\(...\)
\+
[0-9]
/
\1,\2,\3
于 2012-04-18T20:20:46.093 に答える
0
これはあなたのために働くかもしれません:
sed 's/^\(..\).\(..\).\(....\)/\3-\2-\1/' file
于 2012-04-18T22:17:36.027 に答える