BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Mehrere Dateien zeilenweise zusammenführen

Mit Hilfe von lam lassen sich die Zeilen von mehreren Dateien zusammenführen. Im folgenden Beispiel werden drei verschiedene Dateien verwendet:

# cat datei1 
1
2
3
4
5
# cat datei2
a
b
c
d
e
# cat datei3
z
y
x
w
v

Nun lassen sich mit lam die jeweiligen Zeilen zusammenführen:

# lam datei1 datei2 datei3
1az
2by
3cx
4dw
5ev

Mit der -S Option kann ein Trennzeichen definiert werden, welches zwischen die Zeilen der verschiedenen Dateien dargestellt wird:

# lam datei1 -S " " datei2 datei3
1 a z
2 b y
3 c x
4 d w
5 e v
# lam datei1 -S "\
" datei2 datei3
1
a
z
2
b
y
3
c
x
4
d
w
5
e
v

Auch lassen sich jeweils zwei Zeilen einer einzelnen Datei zu einer verbinden:

# lam - - < datei1 
12
34
5

Auf FreeBSD ist lam standardmässig im Basissystem vorhanden. Mehr Informationen zu lam findet man in der Manpage lam(1).

Comments (2)  Permalink

Comments

dino @ 13.12.2010 19:37 UTC
Worin ist lam(1) besser/anderst als paste(1), das seit langem Teil der GNU coreutils ist, und namentlich besser zu cut(1) passt?
Beat @ 14.12.2010 09:02 UTC
Hatte über paste(1) auch schon mal was geschrieben:
http://www.chruetertee.ch/blog/archive/2008/08/09/textdateien-zeilenweise-verbinden.html

Im Gegensatz zu paste(1) könnte man bei lam(1) mit der -f Option die Anzahl Zeichen pro Zeile limitieren und entsprechend formatieren:
# cat foo
12345
123
1
# cat bar
abcde
abc
a
# lam -f 3.3 foo -f 2.2 bar
123ab
123ab
  1 a
Welches besser ist kann ich nicht sagen, sind halt zwei Programme die das Gleiche machen.
No new comments allowed (anymore) on this post.