GNU/Linux >> Znalost Linux >  >> Linux

Vezměte n-tý sloupec v textovém souboru

iirc :

cat filename.txt | awk '{ print $2 $4 }'

nebo, jak je uvedeno v komentářích:

awk '{ print $2 $4 }' filename.txt

Můžete použít cut příkaz:

cut -d' ' -f3,5 < datafile.txt

tiskne

1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495

  • -d' ' - použijte space jako oddělovač
  • -f3,5 - vzít a vytisknout 3. a 5. sloupec

cut je mnohem rychlejší pro velké soubory jako čistě shellové řešení. Pokud je váš soubor oddělen několika mezerami, můžete je nejprve odstranit, například:

sed 's/[\t ][\t ]*/ /g' < datafile.txt | cut -d' ' -f3,5

kde (gnu) sed nahradí jakýkoli tab nebo space znaků s jedním space .

Pro variantu - zde je také řešení v perlu:

perl -lanE 'say "$F[2] $F[4]"' < datafile.txt

Pro úplnost:

while read -r _ _ one _ two _; do
    echo "$one $two"
done < file.txt

Místo _ libovolnou proměnnou (například junk ) lze také použít. Smyslem je pouze extrahovat sloupce.

Demo:

$ while read -r _ _ one _ two _; do echo "$one $two"; done < /tmp/file.txt
1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495

Linux
  1. Přejmenujte soubor v terminálu Linux

  2. Bash Script:Zkontrolujte, zda je soubor textovým souborem?

  3. Připojování textu na konec textového souboru?

  1. Připojit nějaký text na konec názvu souboru?

  2. Jak odstraním nové řádky z textového souboru?

  3. jak použít linuxový příkaz Sort k seřazení textového souboru podle 4. sloupce, číselného pořadí?

  1. Příkaz Shell pro odstranění znaků ^M z textového souboru

  2. Jak vytvořit náhodný soubor .txt (čitelný text jako ASCII) v linuxu

  3. formát souboru s hesly ldapsearch