Ваш вопрос немного неясен, но из вашего оригинального сценария я предполагаю, что следующий ввод
52=abcd_53=1_54=efgh_55=ijkl
должен возвращать следующий вывод:
52=abcd,54=efgh,55=ijkl
Если это вашконечная цель, тогда вы можете просто сделать следующее awk:
awk 'BEGIN{FS="[_=]";OFS=","}
{ for(i=1;i<NF;i+=2) a[$i]=$i"="$(i+1)
if(a[53]==1) print a[52],a[54],a[55]
delete a
}' file
Это, конечно, предполагает, что все ваши строки выглядят так:
Если вы хотите обработать что-то вроде этого,с помощью bash-скрипта вы можете обработать этот вывод напрямую с помощью цикла while
awk '{...}' file | while IFS=, read -r time_tag start_time end_time; do
do what you want to do
done
Если вы хотите иметь быстрое выполнение, то сделайте все с помощью awk
и перенаправьте его вывод в ваш bash-loop: