Я согласен с @ John1024 , и то, как вы решите эту проблему, будет зависеть от того, какой именно текст вы ищете.Если, например, ваши опасения начинаются с text{1,2,...}
, и тогда то, что вы хотите во втором поле, может быть чем угодно, тогда его подход оптимален.Однако, если значения в первом поле изменяются и что вас действительно интересует, это записи, в которых у вас есть valueXX
во втором поле, то подход, отключающий второе поле, может быть тем, что вы ищете.
Если взять, например, ваше второе поле, если интересующий вас текст имеет форму valueXX
(где XX
- это две или более цифры в конце поля), вы можете обрабатывать только те записи, в которых вашвторое поле совпадает, а затем используется простое условное тестирование: FNR == 1
для управления выводом ';'
разделителя и ENDFILE
для управления новой строкой, аналогичной:
awk '$2 ~ /^value[0-9][0-9][0-9]*$/ {
printf "%s%s", (FNR == 1) ? "" : ";", $2
}
ENDFILE {
print ""
}' file1.log file2.log
Пример использования / вывода
$ awk '$2 ~ /^value[0-9][0-9][0-9]*$/ {
printf "%s%s", (FNR == 1) ? "" : ";", $2
}
ENDFILE {
print ""
}' file1.log file2.log
value11;value12
value21;value22
Посмотрите вещи и рассмотрите ваши фактические входные файлы, и тогда любой из этих двух подходов приведет вас туда.