コマンドラインのみを使用して、指定された位置に文字を印刷したいと思います。例えば:
<command> 5
a
そのファイルの5番目の文字がであれば出力されますa
。
私は大きなファイルを扱っているので、理想的にはこれで大きなファイルを処理できます。
コマンドラインのみを使用して、指定された位置に文字を印刷したいと思います。例えば:
<command> 5
a
そのファイルの5番目の文字がであれば出力されますa
。
私は大きなファイルを扱っているので、理想的にはこれで大きなファイルを処理できます。
回答:
とsed
:
$ echo 12345 | sed 's/.\{4\}\(.\).*/\1/;q'
5
$ echo 1234ắ | sed 's/.\{4\}\(.\).*/\1/;q'
ắ
sed
現在のロケールで入力に無効なマルチバイト文字が含まれている場合、は出力の生成に失敗することに注意してください。LC_ALL=C
シングルバイト文字のみを扱う場合に使用できます。
ASCIIファイルでは、次も使用できますdd
。
$ echo 12345 | dd bs=1 skip=4 count=1 2>/dev/null
5
sed 's/.\{4\}\(.\).*/\1/;q' file
1から数えて5番目のバイトが必要な場合:
dd ibs=1 skip=4 count=1
または
tail -c +5 | head -c 1
それに注意してくださいtail
ので、含まれているファイルを与えられ、1からカウントをabcdefg
、このプリントをe
。
dd
およびtail -c
POSIXです。head -c
一般的ですが、POSIXにはありません。GNU coreutils、BusyBox、FreeBSD、NetBSdにありますが、OpenBSDやSolarisにはありません。
cat file | tail -c +5 | head -c 1