Вероятно, многие знают, что при помощи shell built-in read можно построчно читать всякое; особенно это актуально при считывании списка файлов, которые потенциально могут содержать пробелы (например, в выдаче ls или find) или чего-то подобного. Обычно это делается так:
Построчное чтение из файла:
while read line
do
# code
done < file
Построчное
(
Read more... )
Comments 4
в питоне есть i += 1, но вместо него используют zip/enumerate.
Можно попробвать так же. Попробовал paste <(seq) <(ls), но к сожалению paste печатает наиболее длинный столбец а не наиболее короткий.
Запихнул вывод ls как параметр seq. Потерял параллельность выполнения.
(paste <(seq 1 $(ls |wc -l)) <(ls))
Попытался после вывода распечатать количество строк (конечный echo $i). Опять фейл,
(paste <(seq 1 $(ls |wc -l)) <(ls)) | tee >(wc -l)
tee: /dev/fd/63: Bad file descriptor
ИМХО, когда надо знать инструмент очень тонко - значит используется не тот инструмент.
В контексте баша - можно юзать awk или его современного конкурента, python :)
ls | awk '{print NR, $0} END {print "counter at the end:", NR}'
Reply
Reply
Reply
Reply
Leave a comment