Скрипт, который печатает строки файла с указанием их длины

Скрипт, который печатает строки файла с указанием их длины

Я работаю над задачей, в которой меня просят создать скрипт, который получает имя файла в качестве параметра, а затем должен вывести все строки в файле, а также их длину в конце, например: банановое молоко =>банановое молоко 11 unix и linux =>unix и linux 14 macbook pro =>macbook pro 11

решение1

Эта команда выводит каждую строку в файле, за которой следует длина строки (в виде количества символов, не включая разделитель строк в реализациях awk, совместимых с POSIX, хотя некоторые вместо этого выдают количество байтов).

<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"вариант выдаст числа на единицу больше, чем другие, поскольку он включает новую строку.

решение3

Не совсем уверен, что вы ищете. Следующий скрипт должен дать именно тот результат, который вам нужен.

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

Связанный контент