cat file | awk '{print $1,$2,$3,$4,$6}'
вывод:
A1 jhfj jdhfjkhd kdkfjjh jhsdjkfh
A2 ujhf jhdfhsd dsfkks jhsdfjhs
A3 jhfj jdhfjkhd kdkfjjh jhsdjkfh
A4 jhfj jdhfjkhd kdkfjjh jhsdjkfh
A5 ujhf jhdfhsd dsfkks jhsdfjhs
существует № 5 и 4 в строках в th 5-м столбце. Из Вашего сообщения я надеюсь, что Вы запросили как это.
Использование perl
:
%perl -lne 'if(/forms=2/.../^$/ and $_!~/forms=2|^$/){print}' file
Code=06538T0 #grab this line
Code=06538T0 #grab this line
Code=11288T0 #grab this line
Code=11288T0 #grab this line
Code=00553T0 #grab this line
Code=02576T0 #grab this line
Code=02576T0 #grab this line
Использование awk
:
awk '/forms=2/,/^$/{if(!/forms=2/&&!/^$/)print}' file
или:
awk '/^$/{flag=0};flag;/forms=2/{flag=1}' file
Использование sed
(GNU sed):
sed '/forms=2/,/^$/{//!b};d'
Следующее может сработать для вас:
sed -n '/forms=2/,/^[^C]/{/^[^C]/b;p}' filename
или, как было предложено Грэмом :
sed -n '/^forms=2/,/^[^C]/ {/^Code=/p}' filename
Для вашего ввода, он выдаст:
Code=06538T0 #grab this line
Code=06538T0 #grab this line
Code=11288T0 #grab this line
Code=11288T0 #grab this line
Code=00553T0 #grab this line
Code=02576T0 #grab this line
Code=02576T0 #grab this line
Для обработки случаев, когда вы могли бы использовать такие строки, как form = 20
, можно сказать:
sed -n '/^forms=2\b/,/^[^C]/ {/^Code=/p}' filename
Другой sed:
sed -n '/forms=2 /,/^$/ {/^.*forms.*$/d; /^$/d; s/ *#grab/ #grab/}' input
.
Code=06538T0 #grab this line
Code=06538T0 #grab this line
Code=11288T0 #grab this line
Code=11288T0 #grab this line
Code=00553T0 #grab this line
Code=02576T0 #grab this line
Code=02576T0 #grab this line