Questo è un concetto molto semplice, ma qualcosa che non sono mai stato in grado di articolare così bene. e mi piacerebbe provare a scriverlo e vedere dove sbaglio.Che cos'è il carattere di nuova riga - ' n'
Se necessario, come definirei un "carattere di nuova riga". diciamo che se creo un nuovo file in unix (o windows), il file memorizza le informazioni di "fine riga" inserendo un carattere speciale nel file chiamato "carattere di nuova riga". Se sì, qual è il suo valore ASCII? Ricordo che nei programmi C, ho controllato il carattere letto rispetto al valore '\ n'. E perché questa confusione 2 caratteri per rappresentare caratteri di fine linea ..
bash$ cat states
California
Massachusetts
Arizona
Say, voglio inserire uno spazio linea di demarcazione tra le linee e si desidera una potenza di forma: output desiderato:
California
Massachusetts
Arizona
bash$sed -e 's/\n/\n\n/g' states does not work.
Perché non posso trattare "carattere di nuova riga" qui come tratterei qualsiasi altro carattere ed eseguirò qualcosa come il comando precedente. (Capisco che si possa dire che è una questione di sintassi di sed, ma potrebbe spiegare l'intuizione dietro non permettere questo, in modo che io possa liberarmi della mia confusione
Analogamente, all'interno dell'editor di vim, non posso usare:.?% s/\ n/\ n \ n/g Perché così
devo scappare ulteriormente \ n utilizzando una barra rovesciata in sed e dall'interno vim ?.
Grazie ,
Jagrati
* E perché questa confusione 2 caratteri per rappresentare caratteri di fine linea * -. Per il programma, non è in realtà due personaggi - è un personaggio che è "scappato" con una barra inversa. Il compilatore capisce che rappresenta un valore diverso da un normale ASCII ** 'n' **. I caratteri di escape sono comunemente usati in molte lingue e piattaforme per rappresentare caratteri che altrimenti non potresti rappresentare. – GalacticCowboy
Elaborando ciò che ha detto il Cowboy Galattico, '\ n' non è il carattere di nuova riga, è un simbolo che * rappresenta * il carattere di nuova riga nel carattere C e letterali stringa (e in alcuni altri contesti). Il reale carattere di nuova riga nel codice sorgente sarebbe, ovviamente, invisibile, tranne che finirebbe la linea. Questo è il motivo per cui stai riscontrando un problema con sed: '\ n' non rappresenta il carattere di fine riga in quel programma. –
Giuro di aver letto "Che cos'è il carattere di principiante - '\ n'", così stanco – Enriquev