Fórum Root.cz
Hlavní témata => Software => Téma založeno: ZAJDAN 02. 10. 2019, 13:20:59
-
snažím se pomocí sedu vložit záznam do souboru:
sed -i '/quiet showopts/quiet showopts intel_idle.max_cstate=1 processor.max_cstate=1/' /etc/default/grub
ale vrátí mi to:
sed: -e expression #1, char 18: extra characters after command
Předpokládám, že budu muset nějaké znaky escapovat. Poradil by někdo jak na to?...na regex a podobné nejsem vůbec zdatný
a nejlépe bych uvítal, zda lze sedem namísto nahrazení textu spíše najít řetězec a za něj doplnit další
-
sed -i 's/\/quiet showopts\/quiet showopts intel_idle.max_cstate=1 processor.max_cstate=1/naky_blbosti/g' /etc/default/grub
nebo tak neco
-
jinak ten append:
sed -i '/quiet showopts\/quiet showopts intel_idle\.max_cstate=1 processor\.max_cstate=1/s/$/ NECO/' /etc/default/grub
-
DÍKY!
-
nevim jestli dotaz spatne pochopil "robin martinez", nebo ja :-) ale predpokaldam ze jsi NEchtel nahrazovat string
"/quiet showopts/quiet showopts intel_idle.max_cstate=1 processor.max_cstate=1/"
za
"neco jineho"
protoze na to by bylo co robin psal, tedy escapovat / nahrazovaneho stringu
ja to chapu tak ze v /etc/default/grub chces na radku obsahujici GRUB_CMDLINE_LINUX_DEFAULT za stavajici parametry "quiet showopts" pridat "intel_idle.max_cstate=1 processor.max_cstate=1"
pak by v tvem prikladu pouze schazel sed prikaz "s" urcujici ze ma "najit a nahradit"
sed -i 's/quiet showopts/quiet showopts intel_idle.max_cstate=1 processor.max_cstate=1/' /etc/default/grub
pokud bys chtel navic osetrit aby sed menil "quiet showopts" pouze na radku opravdu opsahujici GRUB_CMDLINE_LINUX_DEFAULT (i kdyz v tvem konkretnim pripade bude "quiet showopts" vzdy jen na tomto radku), tak pred s aka hledej_a_nahrad, pridas at zpracovava jen radky to obsahujici:
sed -i '/GRUB_CMDLINE_LINUX_DEFAULT/s/quiet showopts/quiet showopts intel_idle.max_cstate=1 processor.max_cstate=1/' /etc/default/grub
-
pripadne pokud bys nevedel zda tam budes mit "quiet showopts" tak pridavat obecna na radek s GRUB_CMDLINE_LINUX_DEFAULT na konec parametru:
sed -i '/GRUB_CMDLINE_LINUX_DEFAULT/s/"$/ intel_idle.max_cstate=1 processor.max_cstate=1"/' /etc/default/grub
tedy nahradit uvozovku na konci radku za: mezera parametry uvozovka
-
Podle me je i lomitko / i tecka znak, ktery ma nejaky obecnejsi funkce (i v grep tomu tak je), proto je dat potreba pred tyto znaky zpetne lomitko, jak uz tu nekdo napsal. Vystup jsem pak vzdy do ciloveho souboru presmerovaval >>. Nevim, jak je to s postnutim takto.
-
nebo pouzit jiny znak na ohraniceni regexpu.
-
@Honza1Ubuntu, @gill ja tedy nevim jiste kdyz se tazatel uz neozval, ale kdyz se podivate na to bez toho ze je potreba resit / nevidite ze pridava kernel parametry k existujicim a nahrazovanej ani pridavanej retezec NEobsahuje / ? :-) proste ma BayTrail co tuhne kdyz jde do nizsiho cstavu, takze ho chce omezit na 1 pridanim tech tvou *max_state* parametru...