• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【シェル】whileコマンドについて)

【シェル】whileコマンドでテキストから特定の行を読み込む方法

このQ&Aのポイント
  • whileコマンドを使用してテキストから特定の行を読み込む方法について解説します。
  • awkコマンドを使用する場合、特定のフィールド内の文字列のみが読み込まれるため、行全体に特定の文字が含まれている場合に無視されてしまいます。
  • そのため、grepコマンドを使用して、特定の文字を無視して行を読み込ませる方法を紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2

質問者は 正規表現 を知らなかったと思います。No1の方のやり方でOKです。コメントアウトや特定の行の表示、非表示はだれもが考えることで、あなたが、生まれる前から考えられ、仕組みとして入っています。 下記にAWKのリファレンスを示します。nawkの方がプログラムに幅が出ます。 http://aoki2.si.gunma-u.ac.jp/Hanasi/Algo/awk.html http://aoki2.si.gunma-u.ac.jp/Hanasi/Algo/letsawk/WhatIsRegexp.html http://docs.sun.com/app/docs/doc/802-1930-01/6i5u959d9?l=ja&a=view&q=man+awk http://docs.sun.com/app/docs/prod/solaris で見れば使い方がでています。図書館にawkとsedを中心とした文字列処理の本があるので、それを読みましょう。それを参考にすると全て解決します。サンプルが載っているので。 sedでも全く同じ事ができます。行、単語、文字単位での削除や追加、隠滅は sed コマンドの専売特許です。tr , paste , printf コマンドと組み合わせれば出来ない事はありません。 もっともいいサンプルが実は手元にありますね。 /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/init.d http://docs.sun.com/app/docs/doc/805-1753/6j1n2in3v?l=ja&a=view に本家が作ったデーモン起動スクリプトです。とても参考になりますよ。スクリプトの勉強しながら、OSの仕組みも勉強することになります。

その他の回答 (2)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.3

#!/bin/sh cat list.txt | grep -v "^#" | grep -v "^$"| while read LINE do echo $LINE | awk '{print $2}' done

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

grepした結果をwhileにリダイレクトすればよいのでは。 質問文の例だったら、以下の記述でも良いかも。 awk '! /^#|^$/ {print $2}' list.txt

関連するQ&A