#awk #sed #text-processing
#awk #sed #обработка текста
Вопрос:
У меня есть текстовый файл. В этом текстовом файле у меня есть числа от наименьшего до наибольшего. Пример ввода
[ Index 1 ]
1628 5704
32801 61605
71508 90612
102606
Я хочу разделить этот файл на две группы разделов, в первом у меня будут числа от 1 до 58050, во втором у меня будут числа от 58051 до 116100, поэтому, когда мой скрипт найдет число, которое больше 58050, эта программа напишет [Индекс 2]
Ожидаемый результат
[ Index 1 ]
1628 5704
32801
[ Index 2 ]
61605
71508 90612
102606
У вас есть какие-либо идеи?
Ответ №1:
С вашими показанными примерами, не могли бы вы попробовать следующее.
awk '
/^[/{ next }
{
for(i=1;i<=NF;i ){
if($i>=1 amp;amp; $i<=58050){
tempfirstGroup=(tempfirstGroup?tempfirstGroup OFS:"")$i
}
if($i>=58051 amp;amp; $i<=116100){
tempsecondGroup=(tempsecondGroup?tempsecondGroup OFS:"")$i
}
}
if(tempfirstGroup){
firstGroup=(firstGroup?firstGroup ORS:"")tempfirstGroup
}
if(tempsecondGroup){
secondGroup=(secondGroup?secondGroup ORS:"") tempsecondGroup
}
tempsecondGroup=tempfirstGroup=""
}
END{
print "[ Index 1 ]" ORS firstGroup ORS "[ Index 2 ]" ORS secondGroup
}
' Input_file
Вывод будет следующим.
[ Index 1 ]
1628 5704
32801
[ Index 2 ]
61605
71508 90612
102606
Комментарии:
1. Это работает отлично, большое вам спасибо. У вас отличные навыки программирования.