У меня было такое же сообщение об ошибке из нескольких приложений (!), Когда я обновлял pango
в эти дни (на OpenSuSE_Tumbleweed).
В списке рассылки OpenSuSE есть ветка о той же проблеме с AcrobatReader. Там я понял, что это связано с зависимостями от Pango до Harfbuzz (" hb_buffer
...").
Поэтому я обновил libharfbuzz
с 0.9.9. до 1.0.3. и все снова заработало нормально.
Usando GNU awk
, buscando campos con solo números:
awk -v FPAT='[0-9]+' -v OFS=',' '{$2=$2 "/" $3; printf "%s,%s,",$1,$2; for(i=4;i<=NF;i++){ printf "%s%s",$i,i==NF?ORS:OFS}}' <<< "|Ordernum=8921|mn=03|yr=20|id=869|Name=1|Street=2|City=3|State=4|Zip=5|Country=6|"
FPAT
describe cómo se ve el patrón. En este caso, se compone de número solamente.
OFS
es el separador de campo de salida que permite formatear con ,
.
El segundo campo se reconstruye con el tercero. Todos los demás se imprimen tal cual.
Usando GNUawk
:
awk -F\| '{print gensub(/Ordernum=(.*)/,"\\1","g",$2)","gensub(/mn=(.*)/,"\\1","g",$3)"/"gensub(/yr=(.*)/,"\\1","g",$4)","gensub(/id=(.*)/,"\\1","g",$5)","gensub(/Name=(.*)/,"\\1","g",$6)","gensub(/Street=(.*)/,"\\1","g",$7)","gensub(/City=(.*)/,"\\1","g",$8)","gensub(/State=(.*)/,"\\1","g",$9)","gensub(/Zip=(.*)/,"\\1","g",$10)","gensub(/Country=(.*)/,"\\1","g",$11)}'
Awk
solución:
awk '{
for (i = 1; i <= NF; i++) # iterating through all fields
if ($i != "") { # check if field value is not empty
c++; sub(/[^=]+=/, "", $i);
printf "%s%s", (c > 1? (c == 3? "/" : ",") : ""), $i
}
print ""
}' FS='|' file
La salida:
8921,03/20,869,1,2,3,4,5,6
Consed
:
sed 's/|[^=]*=/,/g; s/|$//; s/,//; s|,|/|2'
O si mn
y yr
no son siempre el segundo y tercer campo (pero se encuentran en ese orden):
sed 's@|mn\(=[^|]*\)|yr=@|mnyr\1/@; s/|[^=]*=/,/g; s/|$//; s/,//'