ファイル行と長さを印刷するスクリプト

ファイル行と長さを印刷するスクリプト

私はファイル名を引数として使用し、ファイルのすべての行を長さで印刷する必要があるスクリプトを作成する必要があります。例:バナナミルク=>バナナミルク11 unixとlinux => UnixとLinux 14 MacBook Pro => MacBook Pro 11

答え1

これはファイルの各行と行の長さを印刷します(文字の面では、POSIX準拠のawk実装の行区切り文字は除外しますが、一部はバイト数を提供します)。

<FOO awk '{print $0,length}'

これがあなたが求めているものかどうかはわかりません。

答え2

このawk解決策が最善の解決策ですが、awkを使用したくない場合は、次のようないくつかの選択肢があります。

while IFS= read -r line
do
        printf "%s %d\n" "$line" "${#line}"
done < "$1"
while IFS= read -r line
do
        printf "%s %d\n" "$line" "$(expr "$line" : '.*')"
done < "$1"
while IFS= read -r line
do
        printf "%s %d\n" "$line" "$(printf "%s" "$line" | wc -c)"
done < "$1"
while IFS= read -r line
do
        printf "%s %d\n" "$line" "$(wc -c <<< "$line")"
done < "$1"

このwc -c <<< "$line"バリアントには改行文字が含まれているため、他のものよりも1つ高い数値を提供します。

答え3

何を探しているのか分かりません。次のスクリプトでは、目的の出力を正確に提供する必要があります。

#!/bin/bash
cat $1
cat $1 | wc -m

関連情報