Proč mi echo -e “ \ n ” namísto jednoho dává dva prázdné řádky?
On 1 února, 2021 by admin Řekněme, že v souboru.txt je řádek „aaaa“ a chci za něj přidat POUZE JEDEN prázdný řádek a poté přidat řádek textu za prázdným řádkem.
Udělal jsem:
echo -e „\ n“ >> file.txt
echo „bbbb“ >> file.txt
A pak jsem viděl DVA prázdné řádky mezi aaaa a bbbb
Když používám pouze echo „bbbb“ >> file.txt, pak mezi dvěma textovými řádky není prázdný řádek.
Proč se to stane a jak se toho zbavím ?
Komentáře
- Dobře, dovolte mi shrnout správnou odpověď: \ n znamená přesunout kurzor na další řádek a ' neznamená prázdný řádek.
Odpověď
echo
odešle řetězec, který použijete jako argument, a poté na konec výstupního řetězce přidá znak nového řádku, který řádek ukončí.
S
echo "string"
dostanete string
a na konci nový řádek.
Proto s
echo -e "\n"
získáte nový řádek a nový řádek na konci (tj. dva prázdné řádky).
Pokud nechcete nový nový řádek (tj. k výstupu nedokončeného řádku), použijte echo
s jeho -n
nebo v tomto případě, pokud chcete vložit pouze prázdný řádek, použijte echo ""
nebo echo
vůbec bez argumentu.
Z help echo
v bash
:
Options: -n do not append a newline -e enable interpretation of the following backslash escapes
Pokud chcete něco, co je přenosné do jiných prostředí kromě bash
, použijte místo toho printf
:
printf "\n" >>file.txt printf "bbbb\n" >>file.txt
Nebo jiný způsob provedení těchto dvou příkazů jediným přesměrováním:
{ printf "\n" printf "bbbb\n" } >>file.txt
Nebo jednoduše
printf "\nbbbb\n" >>file.txt
Související:
Komentáře
- Pokud ' skutečně existuje newline automaticky přidán do prvního řádku, když jsem used echo, tak proč jsem při svém druhém pokusu (popsaném pod mou otázkou) nedostal mezi textem žádný prázdný řádek?
- @OhLook Při prvním pokusu přidáte dva nové řádky (jeden je váš
\n
, druhý pochází z nového řádku, kterýecho
vždy přidá). Ve druhém pokusu stačí přidat řetězecbbbb
s novým řádkem na konci. ' Opravdu nechápu, odkud pochází váš zmatek. - @OhLook Proč by měl být prázdný řádek? Váš soubor by obsahoval
aaaa\nbbbb\n
kdeaaaa\n
byl od samého začátku abbbb\n
byl přidalecho 'bbbb'
. Provedeníecho -e '\n'
by přidalo\n\n
do stávajícího obsahu souboru. Pokud již obsahujeaaaa\n
, ' získáteaaaa\n\n\n
. - @OhLook
\n
je znak nového řádku . Přesune kurzor na začátek dalšího řádku. Pokud by na konciaaaa
nebyl od začátku žádný nový řádek, při připojování iv id = by se vámaaaabbbb
dostal na jeden řádek „14c35d2735″>
.
echo -e '\n'
přidává dva nové řádky. Viz předchozí komentář. V souboru byste měli soubor tří znaků nového řádku. To znamená, že nový řádek, který je koncem řádku aaaa
(který tam byl od začátku), a poté dva přidané echo -e '\n'
. Tím vzniknou dva prázdné řádky.
Napsat komentář