私はテキストファイルを読み、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すべての文字は実際に繰り返されます。