bashループを使用してファイルの各行で特定のタスクを実行するにはどうすればよいですか?

bashループを使用してファイルの各行で特定のタスクを実行するにはどうすればよいですか?
ckim@ckim-ubuntu:~/test$ cat tt
#define a b
#define c d
ckim@ckim-ubuntu:~/test$ for i in `cat tt`; do echo $i; done
#define
a
b
#define
c
d

$i変数は、スペースまたはEnterで区切られた各単語を使用します。 $iがcatコマンドの各行を表すようにするにはどうすればよいですか? forまたはwhileを使用すると、私にはうまくいきます。それはbashです。ありがとうございます!

追加: line 全体を繰り返すことができますが、while read line; do echo $line; done < tt各行に対してアクションを実行したいと思います。この出力をforループに渡すと、各単語に分割されます。

ベストアンサー1

@glennjackmanのコメントでこれを行う方法を学びました。これが私が元にしたかったことです(ファイルをgrepして古いファイルパスを抽出します:)。

ckim@ckim-ubuntu:~/U-BOOT/u-boot$ cat tt
dir0/Kconfig:config SUPPORT_SPL
dir1/Kconfig:select SUPPORT_SPL
dir2/Kconfig:select SUPPROT SPL
ckim@ckim-ubuntu:~/U-BOOT/u-boot$ while IFS= read -r i; do echo "${i%:*}"; done < tt
dir0/Kconfig
dir1/Kconfig
dir2/Kconfig

おすすめ記事