Я хочу изменить порядок ввода следующей строкой, но я продолжаю получать ENDD на неправильной линии.Печать между двумя совпадениями с awk
awk '/output/ {printf $0":";flag=1;next} /ENDD/{flag=0;} flag {printf $0 "," ;}{if (flag==0)print}' file
Вход:
exam1
exam4 1
output
list2
frame 3
list 5
ENDD
col 1
cal 2
del 3
Выход:
exam1
exam4 1
output:list2,frame 3,list 5,ENDD
col 1
cal 2
del 3
Желаемая Выход:
exam1
exam4 1
output:list2,frame 3,list 5
ENDD
col 1
cal 2
del 3
Попробуйте 'AWK«/ выход/{Printf $ 0 ":"; флаг = 1, следующий}/ENDD/{флаг = 0; печать "";} флаг {Printf $ 0 "";} {если (flag == 0) print} 'file' – luoluo
Это оставляет дополнительную запятую после выхода: line. Это похоже на задание домашней работы в области компьютерных наук. Должны ли мы делать здесь домашнюю работу? – slobobaby
@slobobaby, это не домашнее задание, это всего лишь часть большего скрипта, над которым я работаю. И если вы не в порядке с решением чужого домашнего задания, вы должны просто игнорировать его. Спасибо за ваши усилия. – user3437245