Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> シェルで複数のファイルを同時に読み取る方法

シェルで複数のファイルを同時に読み取る方法

  

1.単一ファイルの読み取り

シェルスクリプトでは、次のようにさまざまな方法でファイルを1行ずつ読み取ることができます。
for line `cat $ {input_filename}`では、読み込み中に$ linedoneをエコーし​​ます。echo $ linedone< $ {input_filename}

2番目の方法は、ファイルを標準入力にリダイレクトすることです。

2。ファイルの読み方

複数のファイルを同時に読む方法は?次の構文を使用して、bashのファイルリダイレクト機能を使用して、ファイルを特定のファイル記述子にリダイレクトできます。
n< filen> filen>> filen<> file

他のプログラミング言語のfdと同じように、ファイルfileのファイル記述子を開きますnが指定されていない場合、デフォルトの動作は次のようになります。
< file#same as 0< file> file #same as 1> file<> File #same = 0<> file

execコマンドでリダイレクトするファイルを開くことができます。
exec 7< file1exec 8< file2

次に、readコマンドで対応するファイルを読み込むことができます。内容:
read data<& 7#ファイル名ではなく、7がファイルディスクリプタであることを確認してください。<& 8

ファイルを閉じます
exec 7< /dev /nullexec 8< /dev /null

複数ファイルの読み取りサンプルコードは次のとおりです。
readfiles(){ローカルFD1 = 7ローカルFD2 = 8ローカルファイル1 = $ 1ローカルファイル2 = $ 2ローカルカウント1 = 0ローカルカウント2 = 0ローカルeof1 = 0 local eof2 = 0ローカルデータ1ローカルデータ2#ファイルを開くexec 7< $ fil E1 exec 8< $ file2 while [[$ eof1 -eq 0 | 1] |   $ eof2 -eq 0]] data1 <& $ FD1;を読み取ってからcount1 ++ printf"%s、行%d:%s \\ n" $ file1 $ count1" $ data1"とした場合data2<& $ FD2;を読み、次にcount2 ++ printf"%s、行%d:%s \\ n" $ file2 $ count2" $ data2" else eof2 = 1 fi done} #read file1とfile2readfiles file1 file2

Copyright © Windowsの知識 All Rights Reserved