text an einen zeile anhängen

opino

opino

Tripel-As
Hallo,

ich versuche mich gerade in die welt der shellscripte reinzudenken, ich habe aber noch keinen überblick welches tool für was verwendet wird.

Ich habe eine for schleife die über das gesammte verzeichniss läuft.
Ich würde gerne die ausgabe von cat "$i"|grep "01" nicht in einen neue zeile schreiben,
sondern an die aktuelle anhängen. Wie würde man das am einfachsten machen? ich kann mir vorstelen das es mit sed geht, stelle ich mir aber zu umständlich vor.
Code:
#!/bin/sh

for i in ./*; do
echo $i
cat "$i"|grep "T A G " >>out;   
cat "$i"|grep "01" >> out;
done
 
Moin, "cat bla|grep ..." kann man einfacher als "grep ... bla" schreiben.
Wenn du newlines entfernen willst, geht das bestimmt auf viele verschiedene Weisen.
Mir fällt grade perls chomp ein:
Code:
$ grep "T A G " "$i" | perl -pe chomp
$ perldoc -f chomp
Das entfernt aus jeder Zeile das Newline.

edit: wollte man nur das letzte newline aus dem stream chomp()en (was bei dir nicht danach aussieht, aber man kanns ja erwähnen), ginge das mittels
Code:
$ grep "T A G " "$i" | perl -pe 'eof && chomp'
$ perldoc -f eof
 
Zuletzt bearbeitet:
@ gott_in_Schwarz danke für deine Antwort, leider interessiert mich das Konzept des Zeilenweisen anhängens.

ich habe einen Orner voller Dateinen die folgenden Text enthalten:

Code:
--------------------------------------------------------------------------------

                        T A G E S B E R I C H T  30.09.2008

--------------------------------------------------------------------------------



A N L A G E N - I N F O :



ID  GERAET    SERIENNUMMER    ENERGIE   ONLINE

01  WR8KTL05  2000209224      7.89kWh   11:38h

02  WR51MS02  1100123121      5.08kWh   11:25h

03  WR8KTL05  2000222123      7.65kWh   11:40h

Ich möchte aus jeder Datei das Datum und die Energie in eine Zeile haben damit ich das
ganze in einen Datenbank schreiben kann.
Meine Idee ist nun folgende:

Wenn ich in der Schleife auf allen Dateinen iterriere will ich folgendes machen:
Zuerst durchsuche ich die aktuelle Datei ob sie ein Datum enthält und schreibe es in die out datei
danach hänge ich jedes vorkommen von [0-9]\.[0-9][0-9]kWh an die aktuelle zeile der out datei
 
leider interessiert mich das Konzept des Zeilenweisen anhängens.
"Zeilenweises anhängen" gibt es nicht. Es gibt nur anhängen (append). Ob das was du anhängst ein newline am Ende hat bestimmt, ob es in deiner Terminologie "zeilenweise" ist oder nicht.
Einen Weg das abschließende newline zu entfernen hab ich dir gezeigt.

Vielleicht ein Beisiel fürs Verständnis:
Code:
echo -n dies ist eine >> testout
echo " zusammenhängende" zeile >> testout
cat testout && rm testout
 

Ähnliche Themen

Switche abfragen über Script

Skript soll nicht doppelt laufen... kill pkill pid cron

Verschlüsseltes Backup-Script mit rsync

Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

Dateiinhalt mit Tabs wie Original an andere Datei anhängen

Zurück
Oben