Я работаю над задачей, в которой меня просят создать скрипт, который получает имя файла в качестве параметра, а затем должен вывести все строки в файле, а также их длину в конце, например: банановое молоко =>банановое молоко 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