Oto, co próbowałem: sed -i 's/^.*/"$&"/' myFile.txt
Jak zawrzeć każdy wiersz w pliku w podwójnym cudzysłowie z sed?
Umieścił $ na początku każdej linii.
Oto, co próbowałem: sed -i 's/^.*/"$&"/' myFile.txt
Jak zawrzeć każdy wiersz w pliku w podwójnym cudzysłowie z sed?
Umieścił $ na początku każdej linii.
tutaj jest
sed 's/\(.*\)/"\1"/g'
hmm, ten wydaje się nie mieć żadnego efektu. –
Czy muszę uciec podwójne cytaty w PowerShell lub coś? –
Działa świetnie na OS X Yosemite. – funroll
Prawie miał rację. Spróbuj tego lekko zmodyfikowaną wersję:
sed 's/^.*$/"&"/g' file.txt
krótszy
sed 's/.*/"&"/'
bez spacji
sed 's/ *\(.*\) *$/"\1"/'
pominąć pustych linii
sed '/^ *$/d;s/.*/"&"/'
Można też zrobić to bez grupy przechwytywania:
sed 's/^\|$/"/g'
"^" dopasowuje początek linii, a "$" pasuje do końca linii.
|
to "Alternacja", to po prostu "LUB". Trzeba tu uciekać [1], więc po angielsku ^\|$
oznacza "początek lub koniec linii".
"Zastąpienie" tych znaków jest w porządku, po prostu dołącza tekst do początku na końcu, więc możemy zastąpić "
i dodać na końcu końcówkę g
, aby wyszukiwanie globalne było dopasowane jednocześnie.
[1] Niestety, okazuje się, że | nie jest częścią "podstawowych wyrażeń regularnych POSIX", ale jest częścią "ulepszonej" funkcjonalności, którą można skompilować z flagą REG_ENHANCED, ale nie jest domyślnie w systemie OSX, więc jesteś bezpieczniejszy dzięki odpowiedniej podstawowej grupie przechwytywania, takiej jak s/^\(.*\)$/"\1"/
Skromne ciasto dla mnie dzisiaj.
Czy próbowałeś usunąć ampersand? –
Przepraszam, chcę powiedzieć, że wstawiłem $ na początku każdej linii. Edytowane. Bez wzmacniacza nic nie działa, –
oba działają dobrze tutaj. Nie mam pojęcia, jakiego rodzaju sed używasz –