Usando awk
awk 'BEGIN {FS="[; \t]+"; OFS="\t"} {for (i=1; i<NF; i++) print $i, $NF}'
Ex.
$ echo 'YLB; YLR; YLS 30' | awk 'BEGIN {FS="[; \t]+"; OFS="\t"} {for (i=1; i<NF; i++) print $i, $NF}'
YLB 30
YLR 30
YLS 30
Eu quero dividir um texto em linhas e imprimir seu valor, por exemplo, mudar isso:
YLB; YLR; YLS (tab) 30
Para isso:
YLB (tab) 30
YLR (tab) 30
YLS (tab) 30
Esta é uma maneira de fazer isso com "sed":
TAB='echo 'x' | tr 'x' '1''; # tab
SPC='echo 'x' | tr 'x' '0''; # space
WS="[${SPC}${TAB}]"; # whitespace regex
echo "YLB; YLR; YLS ${TAB} 30" |
sed -ne "
/\n/!G
s/^\([^;]*\);${WS}*\(.*\)\(${WS}${TAB}.*\)//
P;/\n.*\n/D
"
Precisamos ter as variáveis de shell TAB / SPC / WS, pois o POSIX "sed" não suporta \ t \ s, portanto, essa é uma implementação pobre dessas.
Tags split