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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

Q&A

解決済

2回答

885閲覧

awk 文字と文字の間にある文字のみ置換

退会済みユーザー

退会済みユーザー

総合スコア0

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

0グッド

0クリップ

投稿2020/08/02 12:55

編集2020/08/02 13:49

例えば、
ーーーーーーーーーーーーー
あああああ

いいいいい

ううううう

えええええ

いいいいい
ーーーーーーーーーーーーー

このようなテキストがあるとして、
「あ」と「う」の間にある「い」のみ
「お」に置換(sub関数)する方法はどのようすれば良いでしょうか。

下記のように出力したいです。
よろしくお願いします。
ーーーーーーーーーーーーー
あああああ

おおおおお

ううううう

えええええ

いいいいい
ーーーーーーーーーーーーー

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2020/08/02 13:12

[SQL]タグって関係あるんですか?
退会済みユーザー

退会済みユーザー

2020/08/02 13:13

すみません、特に関係ありませんでした
Orlofsky

2020/08/02 13:44

関係なければ削ってください。質問は修正できます。
退会済みユーザー

退会済みユーザー

2020/08/02 13:49

ご指摘ありがとうございます。
guest

回答2

0

そういうのはもうPerlとかに任せちゃう。

terminal

1$ perl -0pe 's/^(あああああ\n+)いいいいい(\n+ううううう)$/\1おおおおお\2/gm' sample.txt 2あああああ 3 4おおおおお 5 6ううううう 7 8えええええ 9 10いいいいい

投稿2020/08/02 13:31

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/02 13:50

ありがとうございます。 perlではダメなんです、、、
Daregada

2020/08/02 13:53

元の問題を過剰にぼかしているようですが、もっと実際の問題に近づけた方が役に立つアドバイスがもらえると思うよ。
guest

0

ベストアンサー

/(開始行の正規表現)/,(終了行の正規表現)/{ アクション(この場合置換) }の書式で書いてみました。

terminal

1$ cat hoge.txt 2あああああ 3 4いいいいい 5 6ううううう 7 8えええええ 9 10いいいいい 11 12$ awk '/^あああああ$/,/^ううううう$/{sub(/^いいいいい$/,"おおおおお");print;next};{print}' hoge.txt 13あああああ 14 15おおおおお 16 17ううううう 18 19えええええ 20 21いいいいい 22

※コメントの質問の回答を追記。

$ cat hoge2.txt あああああ long long hoge hoge いいいいい long long hoge hoge ううううう $ awk '/^あああああ$/,/^いいいいい$/{sub(/long long/,"long long int");print;next};{print}' hoge2.txt あああああ long long int hoge hoge いいいいい long long hoge hoge ううううう

投稿2020/08/02 13:22

編集2020/08/02 13:57
hidezzz

総合スコア1248

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/08/02 13:47

ありがとうございます! 因みになんですけど、 ーーーーーーーーーーーーーーーー あああああ long long hoge hoge いいいいい long long hoge hoge ううううう ーーーーーーーーーーーー のようなテキストがあり、 「あ」と「い」の間にある 「long long」のみ 「long long int」にする方法はどのようにすればよろしいでしょうか? ーーーーーーーーーーーー あああああ long long int hoge hoge いいいいい long long hoge hoge ううううう ーーーーーーーーーーーー
hidezzz

2020/08/02 13:58

回答に追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問