- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Такая задачка:
На стандартный ввод сценария поступают строки вида: "Name : Value".
Сценарий должен поместить все имена "опций" (Name) в файл names.txt (по одному в строке), а соответствующие им значения в файл values.txt (также по одному в строке). Строки, не попадающие под этот синтаксис должны игнорироваться.
Пример:
запускаем myscript.sh
Вводим с клавиатуры:
Name : aalib
Version : 1.2
Size : 89862
aa bb cc dd ff
В файл names.txt должно записаться:
Name
Version
Size
В файл values.txt должно записаться:
aalib
1.2
89862
В итоге написал такой сценарий:
#!/bin/bash
awk '
{
FS=" : "
print $1 > "names.txt"
print $2 > "values.txt"
}'
Но в нём небольшой косяк. Незнаю почему, но первую введенную строку он не правильно обрабатывает.
Как можно иначе написать? Или в чём косяк?
Косяк в том, что вы переопределяете FS уже после того, как прочитана и разбита на поля первая строчка. Правильно будет так
BEGIN { FS = " : " }
{
print $1 >> "names.txt"
print $2 >> "values.txt"
}
или так
awk -F " : " '
{
print $1 > "names.txt"
print $2 > "values.txt"
}'
А такой FS = " *: *" , наверное, еще лучше :)