Jak uzyskać wiele wierszy z pliku przez wyrażenie regularne? Często chciałbym uzyskać wiele linii / zmodyfikować wiele linii za pomocą wyrażenia regularnego. Przykładowy przypadek: Próbuję odczytać część pliku XML / SGML (niekoniecznie są one dobrze sformułowane lub mają przewidywalną składnię, więc wyrażenie regularne byłoby bezpieczniejsze niż odpowiedni analizator składni. Ponadto …
Mam plik jak poniżej: mime PI Name: ISHO SUCCESS RATE RT, Value: 95.663826 scr PI Name: RRC Access Failures due to UU, Value: 0.13394141 prog PI Name: RRC Access Failures due to UU, Value: 0.16077702 sch PI Name: RRC Access Failures due to UU, Value: 0.11781933 Chcę usunąć tekst PIdo …
Mam to: sed -i '/^$/d' temp_spec.rb który usuwa puste linie i działa dobrze. Jak mogę to zrobić tylko dla linii 5-999 (najlepiej 5 do końca pliku). Próbowałem: sed -n5,999 -i '/^$/d' temp_spec.rb sed '5,999!d/^$/d' temp_spec.rb ale żadne nie działało (bez błędów).
Mam więc ciąg, który wygląda tak: AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA Chcę podzielić ciąg na 3-znakowe fragmenty rozdzielone znakiem „+”. AUG+GCC+AUG+GCG+CCC+AGA+ACU+GAG+AUC+AAU+AGU+ACC+CGU+AUU+AAC+GGG+UGA I chcę to zrobić z moim dobrym przyjacielem sed. próbowałem cat codons | sed -r 's/([A-Z]\{3\})/\1\+/g' ... bez powodzenia. Jakiego sedpolecenia mogę użyć?
Chcę użyć tutaj doc do poleceń sed i dostarczyć plik do odczytu i plik wyjściowy. Przeglądałem Here-Documents z przewodnika Advanced Bash Scripting, ale nie wspomina nic o regularnych argumentach podczas korzystania z here-doc. Czy to w ogóle możliwe? Chciałbym osiągnąć coś takiego: #!/bin/bash OUT=/tmp/outfile.txt IN=/my_in_file.txt sed $IN << SED_SCRIPT s/a/1/g …
Czy istnieje sposób, aby powiedzieć, sedaby zastąpić wzorzec przy co drugim wystąpieniu? A przynajmniej na co drugą linię? (Pewnie, że jest to możliwe dzięki skryptowi, ale zastanawiałem się, czy sedmogę to zrobić). Edytować znalazłem sed -e "s/pattern/replacement/g;n" Ale zastępuje to za każdym razem, a nie za drugim razem. Przykład Plik …
Chcę usunąć z katalogu pliki dziennika starsze niż 5 dni. Jednak usunięcie nie powinno opierać się na sygnaturze czasowej pliku. Powinien być oparty na nazwie pliku. Na przykład transmisji data jest 07/05/2012 a katalog zawiera 10 plików z nazwami takimi jak ABC_20120430.log, ABC_20120429.log, ABC_20120502.log, ABC_20120320.logitd. Chcę, aby móc usunąć pliki …
Mam bardzo długą serię adresów URL bez znaku oddzielającego, w tym samym formacie co poniżej: http://example.comhttp://example.nethttp://example.orghttp://etc... Chcę, aby każdy adres URL był w nowym wierszu. Próbowałem to zrobić, zastępując wszystkie wystąpienia „http: //” ciągiem „\ nhttp: //” za pomocą sed sed 's_http://_\nhttp://_g' urls.txt ale występuje błąd segmentacji (naruszenie pamięci). Mogę …
Jak usunąć linie zaczynające się od a #, biorąc pod uwagę, że po lewej i prawej stronie mogą znajdować się białe znaki #? # Master socket provides access to userdb information. It's typically
Mam więc kilka plików w katalogu i muszę wstawić wiersz tekstu do każdego z nich. Mają zasadniczo następujący format: <VirtualHost *:80> ServerAdmin gabe@localhost DocumentRoot /var/www/test1 ServerName test1.local ServerAlias test1 <Directory "/var/www/test1"> Options All AllowOverride All </Directory> </VirtualHost> I chciałbym wstawić linię przed zamknięciem </VirtualHost>etykietka. Moje pierwsze założenie jest takie, że …
Mam ciąg jak rev00000010i chcę tylko ostatnią liczbę, w tym przypadku 10. Próbowałem tego: TEST='rev00000010' echo "$TEST" | sed '/^[[:alpha:]][0]*/d' echo "$TEST" | sed '/^rev[0]*/d' oba zwracają nic, chociaż wyrażenie regularne wydaje się być poprawne (wypróbowano z wyrażeniem regularnym )
Czy ktoś może zasugerować elegancki sposób na osiągnięcie tego? Wejście: test instant () test instant () ... test instant () //total 1000 lines wyjście powinno być: test instant1 () test instant2 () test instant1000() Puste wiersze znajdują się w moich plikach wejściowych i w tym samym katalogu jest wiele plików, …
Mam plik tekstowy 250 MB, wszystko w jednym wierszu. W tym pliku chcę zastąpić aznaki bznakami: sed -e "s/a/b/g" < one-line-250-mb.txt Nie działa z: sed: couldn't re-allocate memory Wydaje mi się, że tego rodzaju zadanie można wykonać w jednej linii bez przydzielania dużej ilości pamięci. Czy istnieje lepsze narzędzie do …
Mam plik zawierający wiele wierszy xml. Chciałbym zastąpić niektóre części pliku. Niektóre części pliku zawierają znaki cudzysłowu ( "), które chciałbym zastąpić. Próbowałem uciec od znaku cudzysłowu \, ale nie sądzę, że działa to na podstawie wyniku mojego pliku. Oto przykład jednego z moich poleceń sed: sed -e "s/\"text\"/'text'/ig" file.xml …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.