sed、前後に検索して配置

sed、前後に検索して配置

日付と時刻が異なるテキストが多すぎてパターンとして使用できないのですが、最初と,印刷後"、2番目,と印刷前を検索できるかどうか疑問に思います"。次のようにする必要があります。

4,"2014-05-08 18:22:24",14718202,4,184
4,"2014-05-09 22:07:11",1278184,4,221
3,"2014-05-05 10:01:24",1238461,1,222

これで、次のようになります。

4,2014-05-08 18:22:24,14718202,4,184
4,2014-05-09 22:07:11,1278184,4,221
3,2014-05-05 10:01:24,1238461,1,222

よろしくお願いします。

ベストアンサー1

非常に簡単な方法は、私が言ったように、最初と2番目のコンマを置き換えることです。

sed 's/,/,"/;s/,/",/2' infile

日付を一致させる必要がない場合(すべての行の形式が同じであると仮定):

sed 's/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\ [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\)/"&"/' infile

または、最初と2番目のカンマの間のすべての内容:

sed 's/^\([^,]*,\)\([^,]*\)\(,.*\)/\1"\2"\3/' infile

おすすめ記事