- ベストアンサー
シェルで特定行を処理する方法を教えてください。
初めてご質問させていただきます 数時間考えましたが、全くできない初心者です。 awkとかも使ってみましたが・ちんぷんかんぷんです。 よろしくお願いいたします。 環境:RedHat、シェル:bash [やりたいこと] 特定の文字以外から始まる行を、 特定文字から始まる行へ連結させたい。 (例 aaaから始まっていない行(bbb、ccc、ddd)を、 aaaから始まる行へ出力させる。 ■元となるテキストファイル ============ aaa bbb ccc ddd aaa aaa aaa eee aaa ============ ■整形後のファイル ============ aaabbbcccddd aaa aaa aaaeee aaa ============
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
プログラミング初心者にはちょっと難しいですね。 awk '/^aaa/{if(save!="")print save;save=$0;next} {save=save $0} END{if(save!="")print save}' sedを使うのはさらに難しくなると思います。
その他の回答 (1)
- chaff
- ベストアンサー率30% (264/874)
UNIXは10年以上触っていないので、あまり具体的な助言ができないのですが.... 私なら 「正規表現」と「sed」を使いますね。 ご存知かもしれませんが、 「正規表現」とはパターンによって文字を特定するルールの一つ(例:'*" は一つ以上の文字)で、UNIX系OSなら必ず実装されています。 「sed」とは'StreamEDitor'の略で、awkと並んでこれもUNIX系OSならほとんど持っているユーティリティです。 詳しくはgoogleかなにかで調べてみてください。 sedの市販本(大抵、正規表現の詳しい説明も載っています)も多いですよ。今は知らないけれど..... 正規表現を使うとこのようなことができます。 ・特定の文字から始まる行の文字列の抽出 sedを使うとこのようなことができます。 ・正規表現で特定された文字列の編集 ・キャリッジリターン(改行)の削除 →行への連結 どうですかね?
お礼
sedでも試してみましたが、自分には難しかったです。 改行を削除するパターンをどう使えばうまくいくのか・・・。 勉強になりました。ありがとうございました。
お礼
全く見当違いの方法で進めてました。 ご回答ありがとうございました。