Ich habe zwei Dateien:Wählen Sie Zeilen in einer Datei basierend auf bestimmten Werten in der zweiten Datei (Linux)
ist „Total.txt“. Es hat zwei Spalten: die erste Spalte ist natürliche Zahlen (Indikator) von 1 bis 20, die zweite Spalte enthält Zufallszahlen.
1 321
1 423
1 2342
1 7542
2 789
2 809
2 5332
2 6762
2 8976
3 42
3 545
... ...
20 432
20 758
Der andere ist "index.txt". Es hat drei Säulen: (1.indicator, 2: niedriger Wert, 3: hohe Wert)
1 400 5000
2 600 800
11 300 4000
ich ausgeben will die Zeilen von „Total.txt“ Datei mit dem ersten Spalte übereinstimmt mit der ersten Spalte " index.txt "Datei. Und gleichzeitig muss die zweite Spalte der Ausgabeergebnisse größer als (>) die zweite Spalte der "index.txt" und kleiner als (<) die dritte Spalte der "index.txt" sein.
Das erwartete Ergebnis ist wie folgt:
1 423
1 2342
2 809
2 5332
2 6762
11 ...
11 ...
ich das versucht:
awk '$1==(awk 'print($1)' index.txt) && $2 > (awk 'print($2)' index.txt) && $1 < (awk 'print($2)' index.txt)' total.txt > result.txt
Aber es failed!
Können Sie mir dabei helfen? Vielen Dank!
Verwenden Sie den Befehl 'join'. – Barmar
Das ist nicht, wie Sie Shell-Befehle aus dem Inneren von 'awk' ausführen. – Barmar
Danke @Barmar. Eigentlich möchte ich wissen, wie man den Wert aus der zweiten Datei bekommt, sonst kann ich kompliziertere Fragen herausfinden. Ich habe die obigen Fragen bereits aktualisiert. Ich bin neu bei Linux, vielen Dank für Ihre Hilfe! – lightsnail