Помогите разобраться с bash
AhDoh4aChahr 20 сентября, 2013 - 02:53
Пытаюсь написать цикл который будет выполняться до тех пор пока в файле не останется строк.
file1=test.txt # Команды "wc -l $file1 | cut -d ' ' -f1" подсчитывают число строк в файле # может не лучший вариант, нашёл в интернете i=$(wc -l $file1 | cut -d ' ' -f1) for i in [ $i -ge 1 ]; do # Любая команда для проверки echo $(wc -l $file1 | cut -d ' ' -f1) # Удаляет из файла первую строку sed -i /"`head -n 1 $file1`"/d $file1 # Задаёт переменной новое значение i=$(wc -l $file1 | cut -d ' ' -f1) done
Я ожидал что из файла будет удаляться по одной строке и в неременную i каждый раз будет вписываться значение меньше на единицу. И так пока строки не закончатся. Но цикл выполняется 5 раз и останавливается. Почему так происходит ?
»
- Для комментирования войдите или зарегистрируйтесь
ну вы и накрутили!!! :)
for i in $(seq `cat $file1|wc -l`) ;do
sed -i '1d' $file1
done
Спасибо, у меня опыта совсем
Спасибо, у меня опыта совсем нет. Команду seq ещё ни разу не встречал. Ваш вариант отлично работает. Но не могу понять почему то что я наворочал не срабатывало.
Весьма поучительная книжка
Весьма поучительная книжка ежели владеете инглишем.
http://www.tldp.org/LDP/abs/abs-guide.pdf
Ну или сюда, ежели с последним проблемы.
http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html
Весьма полезно в качестве настольного справочника, ибо через перлы баша голову свернуть немудрено.
Цитата: # Удаляет из
Кошмар
sed -i '1d' file1
Почитайте Advanced Bash Scripting guide, ну и Sed FAQ тогда уж
Нейтральность - высшее достижение сознания!
Куда мне Advanced читать ? Я
Куда мне Advanced читать ? Я только начинаю. Ну а "sed -i /"`head -n 1 $file1`"/d $file1" это обычная ошибка в процессе кто их не делает ?
AhDoh4aChahr написал(а): Куда
Дельный совет же, Advanced Bash-Scripting Guide как раз и поможет правильно начать писать скрипты.
____________
Экономь электроэнергию! Выключи NumLock!
.
Ну… С такой постановкой вопроса можно послать туда же (на The Linux Documentation Project) за Bash-Beginners-Guide.
:wq
--
Live free or die
Anarchist
Да Вы не думайте что не читаю, Advanced начинал но пришлось вернуться к Beginners.
Тяжело идёт в одиночку. Мне это настолько не с кем обсудить что в ближайшем окружении даже ни кто компьютера не имеет.
:)
А если сменить постановку с
А если сменить постановку с "пока не кончаться строки в файле", на посчитать кол-во строк или проделать что-то для каждой строки, то все ёще упростится
Ну да, задумка была именно
Ну да, задумка была именно "посчитать кол-во строк или проделать что-то для каждой строки".
У меня такая дурацкая привычка вопросы излагать не точно. Наверное подсознательно я стесняюсь своей неграмотности и к тому-же более широкое толкование вопроса оставляет простор для фантазии. В редких случаях это приводит к очень положительным результатам. Одна из схем {ученик - учитель}.
При таком подходе часто случаются и отрицательные моменты. Например появление постов от людей,
не в полной мере понимающих `чё-как` но желающих отписаться. Или другой момент: старые вонючие троли которые всем надоели. С первой категорией надо обращаться нежно поскольку они ничего плохого не сделали. А вторую категорию игнорировать. Слышал байки о том что программист это грамотный, образованный и несомненно интиллигентный человек
# сейчас тавтология но позже поправлю
# блин, кто придумал писать одну и ту же букву несколько раз подряд в одном и том же слове без видимого повода?)
схема писать на ходу себя не оправдала. оперативная память загружена более важными задачами а своп на старом диске который сыпется. Изящно мысль не законч^ю. И да! Юмор тут не при чём. Всё по чесТному.
Не знаю, что на это отвечать
Не знаю, что на это отвечать - никаких вопросов, сплошные намеки
в такой постановке это один цикл и внутри одна команда "сделать что-то с текущей строкой", пример есть в любом учебнике/руководстве по bash