質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
grep

grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

解決済

sedコマンド+正規表現で部分置換したい

takaaa
takaaa

総合スコア5

grep

grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

1回答

0リアクション

0クリップ

352閲覧

投稿2022/05/27 23:09

編集2022/05/27 23:24

したいこと

dbからcsvファイルを取り出した後に、sedコマンドを使ってdatetime型のyyyy-mm-dd hh:mm:ss.fffをyyyy-mm-dd hh:mm:ssに置換しようとしています。

試したこと

以下の正規表現を使ったgrepで上記の値を取ることは成功しましたが、sedコマンドを使用した置換ができません。

grep -E “[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])(\S|\s)([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{1,}” test.csv
sed -e "s/\([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])(\S|\s)([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\)\.[0-9]{1,}/\1/g" test.csv

詰まっておりますのでご教授のほどよろしくお願いいたします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

takaaa

2022/05/28 00:05

わかりづらくて申し訳ございません。 grepで該当する値を取れた(正規表現はちゃんとできている)というだけであり、sedだけで済ませるつもりです。
Zuishin

2022/05/28 00:11

grep では拡張正規表現が使われていますが、sed ではそうではありません。リンク先を確認し、合わせてみてください。 その上で、/1 や /2 が sed で何を意味するか調べてみればできるのではないかと思います。
dodox86

2022/05/28 00:31

datetime型相当の文字列がCSVファイルの行のどの部分にあるか(先頭、末尾、途中)で多少とも変わるかもしれないので、可能ならCSVファイルの一部を質問文中に示した方が良いと思います。
melian

2022/05/28 02:44

予め datetime 型の列番号が判っているのであれば awk でもよいかもしれません。 # 2列目の場合 awk -F, -vOFS=, '{sub(/\.[0-9]+$/, "", $2)}{print}' test.csv

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

grep

grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。