n=0 for filename in shivi11*; do n=$(( n + 1 )) mv -i "$filename" "output_$n" done
... где
shivi11*
— шаблон, который должен соответствовать всем файлам, которые вы хотите переименовать (и ничему другому ).Создайте резервную копию данных и проверьте это.
Ответьте на исходный вопрос(перед его редактированием):
Если вы под «разделить» подразумеваете утилиту
split
, то вы можете вызвать утилиту, подобную этой, чтобы получить то, что вы хотите (это предполагает GNUsplit
и что вы хотели бы разделить файлfile
на 20 КБ бит):split -b 20k -a 1 --numeric-suffixes=1 file output_
Это создает
output_1
,output_2
и т. д.Обратите внимание, что, поскольку мы ограничиваем длину суффикса одним символом с помощью
-a 1
, он не сможет быть разделен более чем на 9 файлов. Использование, например.-a 2
создаст файлы с именамиoutput_01
,output_02
и т. д. вплоть доoutput_99
включительно, но неoutput_100
.Опция
--numeric-suffixes=1
является специфической для GNUsplit
-опцией, которая выбирает числовые суффиксы, начинающиеся с заданного числа (вместо 0, как при использовании-d
). Обычноsplit
создает файлы с буквенными суффиксами.
На основании моей интерпретации требований
awk 'NF==1 { head=$0; printed=0; }
NF==3 && $3>20 {
if(!printed) {
printed=1;
if(firstdone)print ""; else firstdone=1;
print head
}
print
}' inputfile
или более короткие варианты
awk 'NF==1 { head=$0; printed=0; }
NF==3 && $3>20 {
if(!printed++) {
if(firstdone++)print "";
print head
};
print
}' inputfile
awk 'NF==1 { head=$0; }
NF==3 && $3>20 {
if(head) {
if(firstdone++)print "";
print head;
head=""
};
print
}' inputfile
С входом
variable1
10 20 30
40 50 60
variable2
2 4 40
3 2 1
variable3
10 10 10
5 5 5
variable4
1 1 1
2 2 21
3 3 3
вывод
variable1
10 20 30
40 50 60
variable2
2 4 40
variable4
2 2 21
На основе одной интерпретации ваших требований:
awk '(NF<3) || ($3 > 20)' file
На основе ваших исправлений:
awk 'NF<=1 || (NF==3 && $3>20)' input
Будет напечатана строка, если она пуста, содержит только одно слово (= строка заголовка )или содержит три поля, третье из которых больше 20.
Изменить Ваша последняя редакция вопроса сделала этот ответ устаревшим. Обратитесь к ответу @Bodo для решения на основе awk
-, которое соответствует вашим требованиям.