FreeBSD + bash + grep = ???

FreeBSD + bash + grep = ???

Hozzászólások

Egy picike bash szkriptet írnék FreeBSD-n, de már a hülyét kapás szélén vagyok miatta.

Ez működik:
#!/usr/local/bin/bash
cat /d*/n*/t*/*.fut

ez is:
cat /d*/n*/t*/*.fut | tr $'\r' $'\n'

de ez NEM:
cat /d*/n*/t*/*.fut | tr $'\r' $'\n' | grep -E "^$"

mert ezt a hibát kapom:
./proba.sh: line 2: 22020 Broken pipe cat /d*/n*/t*/*.fut
' ' 22021 | tr '
'
22022 Done | grep -E "^$"

De van amikor "binary file standard input matches" üzenetet kapok ugyanerre; van amikor meg az
echo "alma" > proba.txt ; cat proba.txt | grep -E "^alma$"
parancsokra kapom meg a ezt a "binary file standard input matches" üzenetet, de máskor meg csak akkor, ha a ^ és a $között nincs semmi.

Csak az üres sorokat szeretném kiszűrni a fájlból, és erre megfelelne a sed is, de a "broken pipe"-os hibaüzenetet kapom erre is:
cat /d*/n*/t*/*.fut | tr $'\r' $'\n' | sed '/^$/d"

Szóval; mi a csoda lehet a baja a bash-nek FreeBSD-n ezekkel?

Bocs, akár törölni is lehetne ezt a témát, mert megoldódott.

A listázott fájl még szövegfájl volt, de valamiért a tr-en átszűrés után a grep már bináris fájlnak tekintette, és ezért adott hibát.

Felvettem a "-a"-t a grep paranccsorára, és most már működik.