Po nějakém zpracování mám svůj vstupní soubor jako níže.
soubor1.txt
12345|john|student
43321|jack|professor
78965|alex|lecturer
Potřebuji zpracovat výše uvedený soubor dále, a tak potřebuji také oddělovač řádku na konci řádku. V současné době to mohu provést, jak je uvedeno níže.
sed 's/$/|/' file1.txt
Výsledkem výše uvedeného příkazu je výstup jako,
12345|john|student|
43321|jack|professor|
|
78965|alex|lecturer|
Jak vidíme, |
se také připojuje k prázdným řádkům. Když jsem se pokusil odstranit |
znak znovu z prázdných řádků pomocí níže uvedeného příkazu,
sed 's/|//g' file1.txt
|
postava se maže všude. Jak mohu smazat pouze |
v prázdných řádcích? Potřebuji také ponechat prázdný řádek.
Přijatá odpověď:
Z originálu můžete přidat |
na řádky, které nejsou prázdné:
Pomocí sed
:
sed -e '/^$/!s/$/|/' file
Pomocí perl
:
perl -lpe 's/$/|/ if length' file
Pokud chcete odstranit |
z řádků, které jsou prázdné (ve druhé verzi):
perl -lpe 's/|// if length == 1'
Extrahovat podřetězec podle Regexp s Sed nebo Grep?
Compiz + Mate Windows Přejít na předchozí pracovní prostor?