Dopo alcune elaborazioni, ho il mio file di input come di seguito.
file1.txt
12345|john|student
43321|jack|professor
78965|alex|lecturer
Ho bisogno di elaborare ulteriormente il file sopra e quindi ho bisogno anche di un interruttore di linea alla fine della riga. Attualmente, posso realizzarlo come di seguito.
sed 's/$/|/' file1.txt
Il comando precedente risulta nell'output come,
12345|john|student|
43321|jack|professor|
|
78965|alex|lecturer|
Come possiamo vedere, il |
viene aggiunto anche alle righe vuote. Quando ho provato a rimuovere il |
carattere di nuovo dalle righe vuote usando il comando sotto,
sed 's/|//g' file1.txt
Il |
il personaggio viene eliminato ovunque. Come posso eliminare solo il |
in righe bianche? Devo anche mantenere la riga vuota.
Risposta accettata:
Dal tuo originale, puoi aggiungere |
alle righe non vuote:
Usando sed
:
sed -e '/^$/!s/$/|/' file
Usando perl
:
perl -lpe 's/$/|/ if length' file
Se vuoi rimuovere |
da righe vuote (nella seconda versione):
perl -lpe 's/|// if length == 1'