- 締切済み
シェルスクリプトでのスプリット
bshでのスプリットはどのようにするのでしょうか? ファイルAには、スペース区切りで以下のデータが入ってます。 # cat fileA parameter1 parameter2 parameter3 parameter1x parameter2x parameter3x ....... .. 上記のファイルでparameter2の部分(真ん中のデータ)を 取得するには、どのようになりますか? 以上宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
Oops. 訂正どうもです>#3 といいつつ 1点突っ込むと「script」って名前は危険です. script コマンドが実行されたら目も当てられない.
- saijyo_739
- ベストアンサー率53% (119/222)
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)
while read column1 column2 column3; do echo column2 done とか? 「bsh での」と書かれたので bsh の機能だけ.
- tostem41
- ベストアンサー率38% (7/18)
bshは詳しくありませんが… スプリットコマンドはファイル分割コマンドと思います。例)ファイルAを3分割にしたい等 今回のように空白で区切られたレコードの2フィールド目を抽出したいのであればcutコマンドを使用すれば特定フィールドの抽出できます。