Chcę dodać skróty do wszystkich linii w zwykłym pliku tekstowym. Nie przeszkadza mi zarówno korzystanie z terminala, jak i GUI - po prostu muszę to zrobić.
text-processing
Oxwivi
źródło
źródło
sed 's/^/##/' -i file
. W takim przypadku byłoby to preferowane, ponieważ nie może się nie udać. W innych przypadkach to polecenie można połączyć z,diff -u file.bak file
aby zobaczyć różnice (w razie potrzeby przeprowadź je przez rurkęless
). Jeśli okaże się, że działa, kopię zapasową można usunąć. W przeciwnym razie można go przywrócić za pomocą prostegomv file.bak file
.sed 's/^\(.*\)$/##\1/'
, ale jest to o wiele ładniejsze.Oto rozwiązanie tego problemu za pomocą Perla
źródło
-p
Przełącznik jest również przydatny:perl -pe 's/^/##/' infile > outfile
. (Istnieje również-i[extension]
przełącznik zastępowania pliku docelowego na miejscu.) Perldoc.perl.org/perlrun.html#%2a-p%2aPodczas gdy jesteśmy przy tym:
Wykorzystuje (stosunkowo nową) wtyczkę edycyjną dla GNU awk 4.1.0+.
źródło
Oto
bash
sposób:( W
bash
powłoce działaread -r
bez innych argumentówIFS= read -r REPLY
.)Jest to zainspirowane stylistycznie przez rozwiązanie perla beav_35 , które, przyznaję, prawdopodobnie działa znacznie szybciej w przypadku dużych plików, ponieważ
perl
można oczekiwać, że będzie bardziej wydajne niż powłoka, jeśli chodzi o przetwarzanie tekstu.źródło
sed -i
nie jest standardem POSIX, więc jeśli jesteś purystą, będziesz chciał użyćed
:źródło
Oto łatwiejszy
perl
sposób niż gdzie indziej:To (ab) wykorzystuje fakt, że
perl -p
drukuje linię po wykonaniu polecenia podanego w-e
.źródło
Możesz używać Vima w trybie Ex:
%
wybierz wszystkie linies
zastąpićx
Zapisz i zamknijźródło
Można to zrobić za pomocą funkcji mapowania Pythona i przekierowania standardowego wejścia:
Zapisz wynik w nowym pliku i użyj go zamiast oryginalnego
źródło