LINUX.ORG.RU

Создание цикла

 


0

1

Доброго времени суток!
Есть файл, в котором с 5 по n (n всегда разное) строки содержатся записи вида:
/Folder1
/Folder2
/Folder3
.....

Для каждой из этих строк нужно нужно создать команду типа:
cat '/Folder1/1.txt' | wc -l
cat '/Folder2/2.txt' | wc -l
cat '/Folder3/3.txt' | wc -l

и выполнить эти команды.
Буду благодарна за любую помощь!

Если грубо, то.

cat file | while read dir; do wc -l ./$dir/*.txt; done 2>|/dev/null

backbone ★★★★★
()
Ответ на: комментарий от Eddy_Em

мутное условие, я его вряд ли понял, и маловероятно, что n в моём примере это та же n, которую имеет в виду автор

zolden ★★★★★
()
Последнее исправление: zolden (всего исправлений: 1)
Ответ на: комментарий от anonymous

find . -name «*.txt» -exec readlink -f {} \; -exec wc -l {} \;

пропустить пять строчек:

$ cat Anna270289
A
n
n
A
/Folder1
/Folder2
/Folder3
/Folder4
$ sed -n '5,$p;' Anna270289 
/Folder1
/Folder2
/Folder3
/Folder4
anonymous
()
Ответ на: комментарий от anonymous

не факт, просто скорее всего автор привел наглядный пример чтобы не смущать нас лишней конкретикой

кроме того, в папке помимо этих txt может быть не мало других сторонних файлов

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
:%s/.*/cat '&\/XXX.txt' | wc -l
:%s/XXX/\=line(".")
:%!sh
:q!
maloi ★★★★★
()
Последнее исправление: maloi (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

да, именно как пример) меня интересует именно создание цикла, а команды, которые формируются в итоге, могут быть разными. То есть нужно сделать цикл, который идет с 5 по (cat '/home/textfile.txt' | wc -l) строку и создает команды, которые потом выполняются. Так как команды могут быть разными, то наверное лучше создавать команды конкатенацией, так как в итоговых командах будут содержаться еще переменные и другой текст

Anna270289
() автор топика
Ответ на: комментарий от Anna270289

То есть нужно сделать цикл, который идет с 5 по (cat '/home/textfile.txt' | wc -l) строку и создает команды, которые потом выполняются. Так как команды могут быть разными, то наверное лучше создавать команды конкатенацией

Вам привели уже штук 5 вариантов, и если присмотреться там нет cat, ибо он не нужен.
Но вы упорная женщина, молодец

zolden ★★★★★
()
Ответ на: комментарий от Anna270289

Кстати, а что у тебя за система? Не проще ли написать скрипт на питоне? bash хорошо, но по-моему более полноценный и простой скриптовый язык типа python будет уместнее.

I-Love-Microsoft ★★★★★
()

почитай man awk, тебе даже цикл не понадобится, в одну строчку всю обработку сведешь

EugeneBas ★★
()
Ответ на: комментарий от Anna270289

начальство точно знает что оно хочет? :) если так, то возражений нет

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Reset

cat не нужен в данном случае, уже говорили выше. Достаточно `wc -l '/Folder$1/$1.txt'`;

Kiborg ★★★
()
Ответ на: комментарий от Eddy_Em

man bash (читаем о read, while, переменных окружения и вообще читаем)

Маме своей man bash присоветуй, чтобы она осознала, какую совершила ошибку, родив тебя, падаль.

anonymous
()

Неосиляторы теперь прикрываются под женскими никами.

anonymous
()
Ответ на: комментарий от MKuznetsov

cat зачем? Чтобы ТСу вместо пятерки четверку влепили? ☺

И сдается мне, труба в аргументе xargs не пройдет

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от MKuznetsov

чё-та затупил..пятница видимо, вечер..задача топика делается просто sed`ом и г-н maloi уже привёл ответ.

MKuznetsov ★★★★★
()
Ответ на: комментарий от Eddy_Em

Насколько я помню, сессия давно уже у всех закончилась) а более глобально задача звучит как создание бекапа, файл с записями - файл конфига, в котором задаются папки, по которым нужно создать пакеты spk. Людям лучше доверять)

Anna270289
() автор топика
Ответ на: комментарий от Anna270289

Или читай документацию, или вяжи носки.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.