ファイルから最も長い行を読み取るには、while読み取りループを使用しますか?

ファイルから最も長い行を読み取るには、while読み取りループを使用しますか?

私はインターネット検索を試しましたが、whileループを使用して行を読み取るスクリプトが見つかりませんでした。詰まってどこから始めるべきかわかりません。

問題は次のとおりです。標準入力からテキスト行を読み取るためにwhile読み取りループを使用するbashスクリプトLongline.shを作成します。スクリプトはこれまでに読み取った最も長い行を追跡し、入力の終わりに達するとその行を印刷する必要があります。

また、質問にテキスト行を含むファイルを入力するように求められた場合は、そのファイルを読み取るか、テキスト行自体を入力するかはわかりません。

ありがとう、KB

ベストアンサー1

cuonglmのリンクによると、bashループは避けるべきです。

awkこの意味では、次のコードは標準のUnixツールを使用してファイル内の最長行の長さを取得しますが、bash繰り返しは行いません。

awk '{n=length($0)>n?length($0):n} END{print n}' file

長さを取得するのではなく、最も長い行を印刷するには、次のようにします。

awk '{longest=length($0)>length(longest)?$0:longest} END{print longest}' 

おすすめ記事