2013-02-11 23 views
5

Usando sedSED sostituire spazio vuoto con NULL

  1. come posso sostituire \ N con NULL

  2. Come posso sostituire lo spazio vuoto || con NULL.

    |200|0||0|\N||^A|0|\N|| 
    

output desiderato

|200|0|NULL|0|NULL|NULL|^A|0|NULL|NULL| 

risposta

2

Hai bisogno di una versione leggermente modificata di this. Qualcosa del genere dovrebbe funzionare:

sed ':a; s:|\(\\N\)\?|:|NULL|:g; ta' 
+0

semplice, ma! lavori! grazie – Deano

1

Penso che il comando che stai cercando potrebbe essere chiamato "tr". Prova

tr \\n \\0 
+0

La migliore risposta per la domanda nel titolo (sebbene non risponda alla domanda specifica nella descrizione) ha funzionato anche – Lambart

1
cat file | sed 's/\\N/NULL/g' | awk -F\| '{for(i=2;i<=NF;i++){ if($i==""){ printf "|NULL"} else{ printf "|%s", $i}}; printf "|\n"}' 
+0

, grazie mille! – Deano

0

con awk

awk 'gsub("\\\\N","NULL");gsub("\\|\\|","|NULL|")' temp.txt 
Problemi correlati