テキストファイルから読み込み、一度に1文字ずつ単語を印刷します。

テキストファイルから読み込み、一度に1文字ずつ単語を印刷します。

私はテキストファイルを読み、Terminal毎秒そのファイルの単語を文字ごとに印刷するプログラムを書くのが好きです。

たとえば、テキストファイルにlog.txt次の文があるとします。

I love Unix but I don't know programming.

前の文を読み、文字、空白を1秒ごとに1つずつ印刷するコードが欲しいです。

ベストアンサー1

ゴロの答え動作します。しかし、注意すべき点はコマンド置換は、POSIX 標準で指定された末尾の改行を削除します。。したがって、実際に繰り返したい場合は理想的ではないかもしれません。みんな文字、さらに印刷できない文字も同様です。もう1つの問題は、Cスタイルのforループがbashとksh93では使用されますが、標準(別名POSIX互換)では使用されないことです/bin/sh。パラメーター拡張の形式${variable:index:offset}もタイプです。バシズム指定されていないパラメータ拡張のPOSIX定義ksh93およびではサポートされていますがzsh)。

それにもかかわらず、移植可能な方法でファイル内のすべての文字を繰り返す方法があります。より実用的なアプローチ。それは次のものを使用することですawk

# all characters on the same line
$ awk '{for(i=1;i<=length;i++){ printf "%c",substr($0,i,1); system("sleep 1");}; print}' input.txt

# all characters on separate lines
$ awk '{for(i=1;i<=length;i++){ print substr($0, i, 1); system("sleep 1"); }}' input.txt

このコマンドを使用すると、substr()両方system()に割り当てられます。POSIX awkすべての文字は実際に繰り返されます。

おすすめ記事