cd lotsafiles
for i in {1..20000}; do
dirnum="$(((i/500)+1))"
mkdir -p "dir_${dirnum}" # using -p allows this to be less noisy on repeat runs
mv "file${i}.png" "dir_${dirnum}"/
done
Переменная IGNORECASE
— это специальная переменная, которая влияет на чувствительность к регистру в регулярных выражениях и строковых операциях (также при разделении полей, если FS
является регулярным выражением, но см. руководство GNU awk
по вашей системе для детали ), но только для GNU awk
. Никакой другой awk
не имеет этой переменной.
Из того, что вы говорите в комментариях , кажется, что по умолчанию awk
у вас mawk
, а не GNU awk
.
Чтобы выполнить сопоставление регулярного выражения без учета регистра в не -GNU awk
, просто преобразуйте строку в нижний или верхний регистр, используя tolower()
или toupper()
, а затем используйте регулярные строчные или прописные буквы. выражение:
awk -F, 'tolower($0) ~ /fiji/ { print NR, "-", $0 }' currencies.csv
awk -F, 'toupper($0) ~ /FIJI/ { print NR, "-", $0 }' currencies.csv
Вы также можете использовать grep
для задачи, которую вы здесь выполняете:
grep -n -i 'fiji' currencies.csv
Выходные данные будут иметь слегка другой формат, где каждая строка будет иметь префикс n:
, где n
— номер строки исходного файла. Очевидно, вы могли бы исправить это, передав вывод через sed 's/:/ - /'
.