[Bash] Filteren op veld

Pagina: 1
Acties:

  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
Alweer een Bash vraagje.

Ik heb een file met de volgende vorm:
code:
1
<veld1> <veld2> <veld3> ... <veldN>


Ik wil de file filteren op 1 veld.

Dus het volgende:
code:
1
2
3
4
5
6
7
while read LINE
do
  if echo $LINE | cut -d ' ' -f x | grep PATTERN
  then
     echo $LINE >> FILTERED_FILE
  fi
done < FILE


Maar ik heb het gevoel dat dit een stuk efficiënter moet kunnen ...
Het zou geweldig zijn als bovenstaande mogelijk was op dezelfde manier als je bvb. grep gebruikt en dit ook te pipen valt ... Wie toont mij het licht?

Een bijkomend probleem in het bovenstaande voorbeeld:
Als er bvb. een sterretje (*) ergens in de lijn voorkomt, dan wordt dit door bash vertaald voordat de lijn in de variabele gestopt wordt.
Als de input lijn bvb de volgende is:
code:
1
veld1 * veld3


Dan bevat LINE de volgende inhoud:
code:
1
veld1 file1 file2 file3 veld3


Waarbij filex de files zijn die in de werkdir staan.
Erg vervelend, en ik heb er geen enkel idee van hoe ik dit kan voorkomen ...

Ik denk dat ik toch maar een Java progje zal schrijven :( .

[ Voor 44% gewijzigd door DieterVDW op 08-10-2008 17:16 ]


  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 26-01 20:38
Voor mijn synchronisatiescript gebruik ik regular expressions, zitten gewoon in bash ingebouwd :)

Bash:
1
2
3
4
5
6
7
while read LINE
do
  if [[ "$LINE" =~ "PATTERN" ]]
  then
     echo $LINE >> FILTERED_FILE
  fi
done < FILE

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08-2025

Tim

Bash:
1
awk '$x ~ /PATTERN/ { print }' FILE > FILTERED_FILE

[ Voor 26% gewijzigd door Tim op 08-10-2008 17:41 . Reden: :z ]


Verwijderd

zelf nooit gebruikt, maar zou moeten werken.
sort -k ...

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 07-01 22:10
Tes schreef op woensdag 08 oktober 2008 @ 17:39:
Bash:
1
awk '$x ~ /PATTERN/ { print }' FILE > FILTERED_FILE
Met de aantekening dat x vervangen wordt door het veldnummer (eerste veld heet $1).

  • DieterVDW
  • Registratie: Juli 2002
  • Laatst online: 12-02-2017
sam.vimes schreef op vrijdag 10 oktober 2008 @ 08:25:
[...]

Met de aantekening dat x vervangen wordt door het veldnummer (eerste veld heet $1).
Moet mij dringend eens verdiepen in awk ...
Pagina: 1