Я новичок в сценариях оболочки и изучаю его за последние 2 месяца. Мне нужна ваша помощь в настройке или предоставлении любого другого решения в sed или AWK для нижеописанного вопроса.Нужна помощь в скрипте оболочки
«написать сценарий для ввода имени файла и отображения содержимого файла таким образом, чтобы каждая строка имела только 10 символов. Если строка в файле превышает 10 символов, тогда отобразите остальную часть строки в следующей строке».
Я написал сценарий ниже и отлично работал. Но мне потребовалось 2 часа, чтобы написать его .. (конечно, не приемлемо). Проблема в том, что я очень хорошо знаю команды оболочки, но до сих пор не освоил навыков, чтобы поместить их в сценарии оболочки :-(Спасибо.
#!/bin/bash
if [ $# -ne 1 ]; then
echo "USAGE: $0 $1"
exit 99;
fi
VAR1=$(echo "$1" | wc -c)
cat "$1" | while read line
do
[ $VAR1 -gt 10 ] && echo "$line" || echo "$line"|tr " " "\n"
done
Это хорошо, что вы сообщаете обычая. Однако, поскольку нет '$ 1', пользователь не будет знать, что они должны ввести. Похоже, эхо должно быть: 'echo 'Usage: $ 0 filename"> & 2', где 'Usage' обычно пишется в смешанном случае, а выход для сообщения об ошибке должен идти на стандартную ошибку, а не на стандартный вывод. –
Я немного озадачен. Значение в '$ VAR1' - это количество символов в имени файла. Код в теле цикла является непостижимым (используйте регулярный 'if/then/else', если вы хотите написать однострочные, перейдите и изучите APL). Если имя файла длиннее 10 символов, вы повторяете строку без изменений; в противном случае вы эхо-строки заменяете пробелы новыми символами. Я не уверен, что очень точно соответствует спецификации. –