Wpis z mikrobloga

Utknąłem na jednej rzeczy.
Chciałem wyszukać stringa w danej kolumnie tablicy.
Np. jeżeli $2 ~= "tekst", to zrób coś.
Próbowałem tak, ale oczywiście nie działa :P

for i in "${ARRAY[@]}"; do
if [[ "$i | awk '{print $2}'" =~ "mirko" ]]; then
echo "znalazlo"
fi
done

Co do tablicy to wrzuciłem tak.
mapfile -t ARRAY < <(cat )

#bash #naukaprogramowania #linux
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mhhh. Chyba trochę nieogarniam. Jak to wpleść aby szukało po każdym elemencie tablicy?


@czajoza4: tablice w bashu są dziwne jak coś więc dwa razy upewniałbym się, że na pewno robią to chcesz zrobić w danym przykładzie. Druga sprawa masz błąd składniowy:

if [[ "$i | awk '{print $2}'" =~ "mirko" ]]; then

$i zostanie potraktowane jako polecenie a nie jako string dla awk. Musisz zrobić np echo $i
  • Odpowiedz
@czajoza4: tzn z tablicą mi chodzi o to, że chyba jesli w jakimś stringu tablicy będziesz miał spację to for potraktuje to jako separator i będziesz miał przez to dwie iteracyje pętli na dwóch elementach zamiast na całym jednym stringu. To wynika z tego, że separatorem dla pętli w bashu są białe znaki. Ale musisz sprawdzić bo w sumie nie wiem jak się bash zachowuje w takim przypadku.
  • Odpowiedz
@Kryspin013: No właśnie łapie. Na szczęście każdy element tablicy u mnie to osobna linijka, a przynajmniej tak zaczytało.

Trochę gorzej z tymi kolumnami, bo tam separatorem jest właśnie spacja.
Dla $1, $2 oraz $3 jest okej. Potem trochę się rozjeżdża, bo rozdziela wszystko po spacji :/
Ale tak naprawdę to te 3 pierwsze są dla mnie kluczowe.

https://pastebin.com/yNRbt9ng
  • Odpowiedz
@Kryspin013: Mhhh, ale jeżeli chodzi o elementy to wszystko łapie OK

[0] Nazwa pliku Administrator Próbka Ostatnia modyfikacja
[1] reload_2020-02-12T122536.do_ext_1 probe Healthy 5/5 Fri, 27 Mar 2020 15:42:01 GMT

itd.
  • Odpowiedz