GNU/Linux >> Znalost Linux >  >> Linux

Přidání sloupce hodnot v souboru odděleném tabulátory

Smyčku s jednou vložkou můžete použít takto:

for f in file1 file2 file3; do sed -i "s/$/\t$f/" $f; done

Pro každý soubor v seznamu se použije sed pro připojení na konec každého řádku tabulátor a název souboru.

Vysvětlení:

  • Pomocí -i příznak s sed provést výměnu na místě a přepsat soubor
  • Proveďte náhradu pomocí s/PATTERN/REPLACEMENT/ . V tomto příkladu je PATTERN $ , konec řádku a REPLACEMENT je \t (=TAB) a $f je název souboru z proměnné smyčky. s/// příkaz je v dvojitých uvozovkách, takže shell může rozšiřovat proměnné.

No tak, proč doporučujete tyto výkonné nástroje, když je tu paste příkaz!

$ cat a
A
B
C
D
$ cat b
1
2
3
4
$ paste a b
A   1
B   2
C   3
D   4

S trochou triku můžete použít paste pro účely OP. Nenahradí však vložené soubory:

for f in file1 file2 file3; do 
    paste $f <(yes $f | head -n $(cat $f | wc -l)) > $f.new
done

Toto vloží příslušný název souboru jako poslední sloupec každého souboru do nového souboru filename.new


Můžete použít awk :

awk '{print $0, FILENAME}' file1 file2 file3 ...

Linux
  1. Zobrazit výstup příkazu nebo obsah souboru ve formátu sloupce

  2. Nahradit proměnné prostředí v souboru jejich skutečnými hodnotami?

  3. Lum – nahradit běžné hodnoty ve dvou souborech podle prvního sloupce?

  1. Řazení souboru odděleného tabulátory

  2. Přidání sekce do souboru ELF

  3. Linux shell třídit soubor podle druhého sloupce?

  1. hledání jedinečných hodnot v datovém souboru

  2. Přidání časového razítka k názvu souboru s mv v BASH

  3. Přidejte záhlaví do souboru odděleného tabulátory