Динамический цикл по файлам в каталоге

El siguiente script une con la línea anterior cualquier línea que no comience con 2 números:

$ awk -v ORS="" '$1~/^[0-9]+$/ && $2~/^[0-9]+$/ && NR>1{printf "\n"}1' file
1234  1234  dei_1/3,dei_2/3,dei_9/0,dei_10/0,dei_8/4
2345  2345  dei_8/9,dei_5/6,dei_4/9
4244  4244  dei_0/9,dei_4/6,dei_4/1
4235  4235  dei_0/9,dei_4/6,dei_4/,dei_9/7,dei_1/3,dei_2/3,dei_9/0

Esto se basa enORS(separador de registro de salida )que se restablece a una cadena vacía. La nueva línea se agrega si los 2 primeros campos son números (y si no es la primera línea ).

2
08.07.2019, 16:33
1 ответ

Если все файлы находятся на один уровень ниже внутри i18n, вам не нужен метод find.

Измените команду for на использование:

для ФАЙЛА в i18n/*

Кроме того, при ссылке на переменную должен предшествовать символ $.

Я рекомендую использовать безопасную команду при первом выполнении цикла for, иначе это может нанести большой ущерб. Например, просто перечислите значение, которое он видит для FILE, и покажите команды, которые он будет запускать:

for FILE in i18n/*
do
    echo "fizzbuzz $FILE $FILE.properties"
done

Когда вы будете удовлетворены тем, что хотите, уберите эхо.

Если вы хотите, чтобы он проходил по нескольким каталогам, этот ответ не сработает, но я исхожу из исходного вопроса, который выглядит так, как будто это может быть плоский каталог.

2
27.01.2020, 22:08

Теги

Похожие вопросы