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

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

ただいまの
回答率

90.47%

  • Linux

    3903questions

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

  • sed

    59questions

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

  • 置換

    40questions

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

linux環境での、特定キーワード下n行への文字列挿入方法について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 704

nikori

score 9

前提・実現したいこと

特定のキーワードの下n行目からm行目の行頭に文字を記入したいです。
linux環境でbash等のシェルを使って、以下に示すような座標データの先頭に名前を挿入できないかと考えています。

title文字からn個は"spiecies 1"の座標、その続きm個は"spiecies 2"の座標...というように法則性があるのですが、「titleから数えてn番目の行頭に文字を挿入する」という手法が思いつかず困っています。
bash等で表現する手法があれば、お教えください。

titleA
Ax1 Ay1 Az1
Ax2 Ay2 Az2
Ax3 Ay3 Az3
Ax4 Ay4 Az4
Ax5 Ay5 Az5
titleB
Bx1 By1 Bz1
Bx2 By2 Bz2
Bx3 By3 Bz3
...(以下続く)
titleA
"spieces 1" Ax1 Ay1 Az1
"spieces 1" Ax2 Ay2 Az2
"spieces 2" Ax3 Ay3 Az3
"spieces 2" Ax4 Ay4 Az4
"spieces 3" Ax5 Ay5 Az5
titleB
"spieces 1" Bx1 By1 Bz1
"spieces 1" Bx2 By2 Bz2
"spieces 2" Bx3 By3 Bz3
...(以下続く)


・文字列
titleA,titileB...
"spiecies 1","spiecies 2"...
・数字
Ax1,Ax2...

試したこと

恥ずかしながら、awkを使って全行の頭に"spiecies 1"を挿入し、"spiecies 2"以降は手動で直しています。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

動作確認はしてませんが、こんな感じで

/title/ {
  print $0
  num = 0
  next
}
{
  num = num + 1
  # numに応じて文字列を挿入
}


あ、awk のスクリプトをイメージして書いてあります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/18 14:50

    awk自身に条件分岐の構文があったのですね。無事解決しました。
    不勉強な素人質問におつきあいいただき、ありがとうございました。

    キャンセル

関連した質問

  • 受付中

    重複$PATHの整理について

    CentOSに登録された$PATHをechoしたところ、 どうも重複しているようなものがたくさんあったので、問題があれば整理がしたいのですがやり方を教えて下さい。 /usr/lo

  • 解決済

    Linux 変数に入力したコマンドのエラー

    下記のように変数CMDに入力したコマンドを実行するとで下記のようなエラーが発生してしまいます。 CMD= "sudo su - foo -c \"cd /home/foo/r

  • 受付中

    cronの設定についてどなたか教えていただけませんか

    何卒よろしくお願いいたします。 前提・実現したいこと Linuxのパソコンを使っています。 自作したshell scriptを毎回決まった時間に自動で動作させたいと思って

  • 解決済

    Linux コマンドを同時に実行

    Linuxにてcdしたあとlsしたりcatしたりしたいフォルダがあるのですが一回のテラタームへのペーストでcdとls両方を実行させることは可能でしょうか? 現状はエクセルで今日の

  • 解決済

    特定の文字を含むファイルを抽出する

    現在、特定のファイル配下にあるファイルの中でredirect::responseという記載があるファイルを抽出したいと考えております。 その際に 色々調べた結果、下記を試し

  • 受付中

    Gnuplotで積立棒グラフを並べる方法

    Gnuplotで積立の棒グラフを並べる方法が分かりません. 作りたい図のイメージは,以下の様なものです. 普通にヒストグラムを書くなら以下のようにしていて, pl

  • 解決済

    ディレクトリ名 スペース エスケープ

    以前に解決してもらった質問にはなるのですが、問題が新たに発生したため解決策を教えていただきたいです。 コマンドライン:↓ find $path -type d | grep -

  • 解決済

    ls -l サイズ幅固定

    ls -lでの表示はファイルのサイズも表示してくれて、サイズ桁数が違っても終端を合わせて表示させていると思います。そのサイズ部分の幅を10ケタで固定させて表示させたいのですが、ls

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

  • Linux

    3903questions

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

  • sed

    59questions

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

  • 置換

    40questions

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