W tej chwili używam echo "Hello World" >> file.txt
do dodania tekstu do pliku, ale muszę również dodać tekst poniżej określonego ciągu, powiedzmy „[opcja]”, czy jest to możliwe sed
?
NA PRZYKŁAD:
Plik wejściowy
Some text
Random
[option]
Some stuff
Plik wyjściowy
Some text
Random
[option]
*inserted text*
Some stuff
text-processing
sed
replace
Javier Villanueva
źródło
źródło
input
, aoutput
linie. Ponieważ twoje Q jest niejasne. Możesz także zrobićecho "Hello World [option]" >> file.txt
, ale to nie ma sensu.Odpowiedzi:
Dołącz linię po meczu
sed '/\[option\]/a Hello World' input
Wstaw linię przed dopasowaniem
sed '/\[option\]/i Hello World' input
Dodatkowo możesz wziąć kopię zapasową i edytować plik wejściowy w miejscu za pomocą
-i.bkp
opcji sedźródło
sed: 1: "/pattern/a some text here": command a expects \ followed by text
\ <<NEWLINE>>
poa
opcji0,
polecenia:sed '0,/\[option\]/a Hello World' input
lubsed '0,/\[option\]/i Hello World' input
Tak, jest to możliwe dzięki
sed
:Przykład:
źródło
foo bar option bar option baz
. Więc wzorzec stał sięfoo bar option bar option addedstring baz
?Z
awk
:Należy pamiętać, że niektóre znaki nie mogą być dołączone dosłownie, dlatego należy użyć sekwencji ucieczki (zaczynają się od odwrotnego ukośnika), np. Aby wydrukować dosłowny odwrotny ukośnik, należy napisać
\\
.W rzeczywistości jest tak samo,
sed
ale dodatkowo każda osadzona nowa linia w tekście musi być poprzedzona odwrotnym ukośnikiem:Więcej informacji na temat sekwencji ucieczki znajduje się w instrukcji.
źródło