Wiem, że mogę to zrobić w Bash: wc -l <<< "${string_variable}" Zasadniczo wszystko, co znalazłem, dotyczyło <<<operatora Bash. Ale w powłoce POSIX <<<jest niezdefiniowany i od wielu godzin nie jestem w stanie znaleźć alternatywnego podejścia. Jestem pewien, że istnieje proste rozwiązanie tego problemu, ale niestety nie znalazłem do tej pory.
Mam kilka plików i chcę znaleźć, który zawiera sekwencyjne linie zaczynające się od określonego ciągu. Na przykład dla następującego pliku: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Cyyyyyyyyy Czzzzzzzzz Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd Ceeeeee Istnieje więcej niż jedna linia rozpoczynająca się od „C”, więc chcę, aby ten plik został znaleziony za pomocą …
Chcę działać na liście podkatalogów w katalogu. Rozważać: for x in x86-headers/*/C/populate.sh; do echo $x; done To daje x86-headers/elf/C/populate.sh x86-headers/gl/C/populate.sh x86-headers/gmp/C/populate.sh x86-headers/gnome2/C/populate.sh x86-headers/gtk2/C/populate.sh x86-headers/jni/C/populate.sh x86-headers/libc/C/populate.sh Ale chcę wartości, która odpowiada drugiej części ścieżki elf, glitp wiem jak rozebrać wiodącym x86-headers. for x in x86-headers/*/C/populate.sh; do i=${x##x86-headers/}; echo $i; done co …
Mój dashskrypt przyjmuje parametr w postaci hostname:portnp .: myhost:1234 Natomiast port jest opcjonalny, tj .: myhost Muszę odczytać hosta i port w osobne zmienne. W pierwszym przypadku mogę wykonać: HOST=${1%%:*} PORT=${1##*:} Ale to nie działa w drugim przypadku, gdy port został pominięty; echo ${1##*:}po prostu zwraca nazwę hosta zamiast pustego …
Szukam eleganckiej jednowarstwowej (np. awk), Która skróci ciąg ścieżki uniksowej, używając pierwszego znaku każdego poziomu nadrzędnego / pośredniego, ale pełnej nazwy basename. Łatwiej jest pokazać za pomocą przykładów: /path/to/file → /p/t/file /tmp → /tmp /foo/bar/.config/wizard_magic → /f/b/./wizard_magic /foo/bar/.config/wizard_magic→ /f/b/.c/wizard_magic W świetle dobrych punktów @ MichaelKjörling i @ChrisH poniżej, ten przykład …
Mam ciąg będący wynikiem operacji, nad którą nie mam kontroli. Kiedy drukuję tę zmienną za pomocą echo, otrzymuję: echo $myvar hello Jednak kiedy to zrobię if [ $myvar = "hello" ]; then echo they are equal else echo they are not equal fi Zawsze rozumiem, że nie są równi. Podejrzewam, …
Przeczytałem kilka innych pytań dotyczących manipulacji ciągami bashowymi, ale wydaje się, że są to wyspecjalizowane aplikacje. Zasadniczo, czy jest sposób, aby zrobić poniższe prostsze? zamiast $ string='hello world'; string2="${string// /_}"; echo "${string2^^}" HELLO_WORLD coś jak $ echo 'hello world' | $"{-// /_}" | "${ -^^}" HELLO_WORLD Edytuj Jestem zainteresowany utrzymywaniem …
Szukam znaleźć i zastąpić w gigantycznym zrzucie bazy danych i nie robi tego, co moim zdaniem powinno się zdarzyć. Chciałbym grep dla mojego ciągu docelowego w pliku, a następnie zobaczyć około 8 znaków otaczających (w zależności od tego może być konieczne dostosowanie tej liczby). Jak mogę to zrobić? Powodem, dla …
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.