• 締切済み

シェルスクリプトでのスプリット

bshでのスプリットはどのようにするのでしょうか? ファイルAには、スペース区切りで以下のデータが入ってます。 # cat fileA parameter1 parameter2 parameter3 parameter1x parameter2x parameter3x ....... .. 上記のファイルでparameter2の部分(真ん中のデータ)を 取得するには、どのようになりますか? 以上宜しくお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

Oops. 訂正どうもです>#3 といいつつ 1点突っ込むと「script」って名前は危険です. script コマンドが実行されたら目も当てられない.

回答No.3

No2の回答に補足します。 readコマンドは標準で標準入力を処理しますので、スクリプト中で一つのデータファイルを扱う場合にはNo2のスクリプトを下記の方法で実行すれば 良い(手軽)でしょう。 ※ echoの引数は変数ですから$が抜けてましたが % cat fileA | script スクリプトの中で複数データファイルを読み込みたい場合や読み込むデータ ファイルのファイル名がfileAと決まっている場合には while read column1 column2 column3; do echo $column2 done < fileA とファイル名を指定して読み込めば良いでしょう。 標準では区切り文字が空白文字の設定になっていますが、変数IFSに区切り 文字を設定すればカンマ区切り等のデータも扱えます。 Ex. IFS="," while read column1 column2 column3; do echo $column2 done < fileA 組み込みコマンドsetを用いれば同様のフィールド分割が可能ですので、 データを加工し、加工後文字列の2カラムと4カラムを取り出す様な事も できます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

while read column1 column2 column3; do echo column2 done とか? 「bsh での」と書かれたので bsh の機能だけ.

  • tostem41
  • ベストアンサー率38% (7/18)
回答No.1

bshは詳しくありませんが… スプリットコマンドはファイル分割コマンドと思います。例)ファイルAを3分割にしたい等 今回のように空白で区切られたレコードの2フィールド目を抽出したいのであればcutコマンドを使用すれば特定フィールドの抽出できます。

関連するQ&A

専門家に質問してみよう