Jaka jest twoja wersja sed? Testuję z GNU sed version 4.2.1i to nie działa.
cuonglm
2
Wygląda na to, że brakuje kreski ułamkowej na końcu pierwszej linii, po ukośniku?
Volker Siegel,
7
Kolejny aspekt:
Jak utrzymywalne są [long]powyższe elementy?
Im krótsze i bardziej wyraźne są klauzule, tym łatwiej będzie je zmieniać i ulepszać w miarę upływu czasu i (sed-zewnętrznych) faktów zmieniających się wokół funkcji, którą zapewniają.
/x
modyfikator do podstawienia.Odpowiedzi:
Możesz zapisać długi ciąg do zmiennych bash, a następnie użyć w
sed
poleceniu:Jeśli możesz użyć
perl
, możesz przerwać długi wzór za pomocąx
modyfikatora:źródło
sed "s/$string/$replace/" file.txt
jest w porządku.replace=
.Dzielenie kilku linii odwrotnym ukośnikiem działa, jeśli nowe linie nie są wcięte.
Testowane na Cygwin z GNU sed 4.2.2
źródło
GNU sed version 4.2.1
i to nie działa.Kolejny aspekt:
Jak utrzymywalne są
[long]
powyższe elementy?Im krótsze i bardziej wyraźne są klauzule, tym łatwiej będzie je zmieniać i ulepszać w miarę upływu czasu i (sed-zewnętrznych) faktów zmieniających się wokół funkcji, którą zapewniają.
na przykład
... może być czymś, do czego należy dążyć i preferować.
źródło
Możesz to również rozbić w ten sposób:
A może jak:
Lub z heredoc:
źródło