• 締切済み

コマンドでテキスト編集[redhat Linux]

最近Linuxを使い始めました。 コマンドでテキスト編集を行いたいのです。 下図のような感じで特定の行数の末尾に改行せずに文字列を追加してファイルに上書き ---------------------------------------- #aaaaaaaa      #bbbbbbbb #cccccccc   ↓ #aaaaaaaa #bbbbbbbbzzzzzzzz #cccccccc ---------------------------------------- もしくは特定の文字列の後ろに新しい文字列を挿入、というのは可能でしょうか? エディタでも出来なくは無いのですが、量が多いので便利な使い方をこの機会に少しでも覚えたいと思いまして。 お暇でしたら、どうぞ回答をお願いします。

みんなの回答

  • RASUM2
  • ベストアンサー率58% (10/17)
回答No.3

中間ファイルtmp.txtを使ってしまいますが、次でいかがでしょうか。 対象とする文字列の条件がわからないので、行頭が#で、その後にbが1個以上続いているものと考えました。 (元のテキストファイルを org.txt とします) $ awk '{if (/^\#b+/){print $0 "zzzzzzzz"} else {print $0}}' org.txt > tmp.txt $ cp tmp.txt org.txt $ rm tmp.txt 2007年4月2日

Fazer
質問者

お礼

回答ありがとうございました。 なんとか自力で解決に至りました。 $ sed -i -e '2s/$/zzzzzzzz/' txt というので実現できるようです。 CUIはなかなか奥が深いですね・・・ 回答してくれた方々、ありがとうございました。

  • adkori
  • ベストアンサー率31% (221/705)
回答No.2

#1です。 挿入と考えるとうまくいかないかもしれませんね。 #bbbbbbbb を #bbbbbbbbzzzzzzzz に置き換えるという方法でもだめでしょうか?

  • adkori
  • ベストアンサー率31% (221/705)
回答No.1

$ man sed 概要はWikipediaあたりをご覧ください。 余談ですが、ついでにawkの使いかたも覚えるといろいろ便利だと思います。

Fazer
質問者

お礼

回答ありがとうございました。 実はsedを使うところまでは見当がついていたのですが、特定の行の末尾に挿入するためのオプションが分かりません・・・ 色々試してみているのですが、行間に挿入されてしまいます。 行の末尾に挿入、というオプションはsedに用意されているのでしょうか?

関連するQ&A

専門家に質問してみよう