Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

UNIX Wie Zeilenumbruch in SED eintippen?

Frage Entwicklung Batch & Shell

Mitglied: ozabel

ozabel (Level 1) - Jetzt verbinden

27.06.2009, aktualisiert 13:59 Uhr, 9725 Aufrufe, 17 Kommentare

Hallo,

und mal wieder eine kleine Frage ...

Danke
Oliver

Ich möchte eine per "sed" bearbeitete Datei mit einer Überschrift ergänzen.

Dazu kann ich folgendes nutzen:

cat DATEI | sed -n -e '1i\
Überschriftszeile ' -e .......

Für das Kommando i (insert) ist laut meinen Nachforschungen hinter dem "i" ein Zeilenumbruch notwendig, so dass ich die Befehle nicht mehr in eine Zeile schreiben kann.
Ich könnte mir aber vorstellen, dass man den Zeilenumbruch auch per Buchstabenkürzel eingeben kann, den sed dann als Zeilenumbruch interpretiert, so dass ich wieder auf eine Zeile komme.

Weiß jemand, ob und wie das geht?

Danke
Oliver
Mitglied: paulepank
27.06.2009 um 10:58 Uhr
Hallo Oliver,

Wir würden uns gern voller Tatkraft deines Problems annehmen, sind aber zur Zeit noch mit deinen Beiträgen vom
20.12.08, 31.12.08 und 23.06.08 beschäftigt.
Oder sind diese Probleme etwa gelöst ? Dann markiere bitte diese Beiträge auch als gelöst.

Übrigens:
Die Lösung für das Editieren ist sehr einfach.
Dein Code kann nicht funktionieren, da deine Nachforschungen sehr nachlässig waren.

cu paulepank
Bitte warten ..
Mitglied: LotPings
27.06.2009 um 12:36 Uhr
Hallo Oliver,
da kann ich mich paulepank nur anschließen. Wie setze ich einen Beitrag auf "Gelöst" oder "Erledigt"?

Lesenswert wäre auch noch Useless use of cat
Und das dir schon bekannte Tutorium

Überleg mal was -n bedeutet

Gruß
LotPings
Bitte warten ..
Mitglied: ozabel
27.06.2009 um 13:58 Uhr
Guten Morgen,

danke für den Hinweis. Habe die alten Beiträg jetzt als gelöst markiert.

Nochmal zur Ergänzung meiner Frage:
Ich habe nur einen Auschnitt des ganzen Befehls gegeben. Dahinter kommt noch die Ausgabe der gewünschten Zeilen (daher auch -n).
Es funktioniert ja auch alles.
Ich möchte lediglich wissen, wie ich, anstatt einen echten Zeilenumbruch per ENTER-Taste auszuüben, den Zeilenumbruch per Zeichen emulieren kann (da ich dann z.B. bei fünf Überschriftszeilen anstatt fünf neuer Zeilen im Befehl nur eine Zeile bräuchte).

In diesem Zusammenhang: vielleicht gibt es so ein Zeichen auch für den Tabulator?

Danke
Oliver
Bitte warten ..
Mitglied: paulepank
27.06.2009 um 14:37 Uhr
Moin,

Fakt ist:
Was -n bedeutet hast du nicht gelöffelt.
Mit den Beiträgen der Links von LotPings hast du dich nicht beschäftigt.
Das Manual von sed oder einem anderem Unixtool hast du nicht mal im Ansatz gelesen, sonst wüßtest du wie ein Tabulator dargestellt wird. Eigne dir doch etwas Grundlagenwissen an.

der Code
01.
sed -e 1i"\Das ist eine Überschrift\\toben" -i DATEI
sollte das gewünschte Ergebnis bringen (mit TAB und Leerzeichen)

cu paulepank
Bitte warten ..
Mitglied: mrtux
27.06.2009 um 14:58 Uhr
Hi !

Zitat von paulepank:
Das Manual von sed oder einem anderem Unixtool hast du nicht mal im
dargestellt wird. Eigne dir doch etwas Grundlagenwissen an.

Vielleicht basiert sein Grundwissen auch einfach nur auf einer falsch gewählten Information: http://de.wikipedia.org/wiki/Sozialistische_Einheitspartei_Deutschlands

mrtux
Bitte warten ..
Mitglied: ozabel
29.06.2009 um 16:11 Uhr
Hallo,

da habe ich beim Generalisieren wohl zu wenig Code kopiert und daher ist das "-n" meines ersten
sed-commands "Auswahl von Zeilen" stehen geblieben.
Insofern hast Du recht - natürlich ist die hier angesprochene Zeile ohne "-n"
(und ich habe es doch verstanden )

Hier der komplette funktionsfähige Block:

cat Lauf0 | sed -n -e '/(Künstler)/p;/ 2009$/p' |
sed -e 's/(Künstler )g;s/Erscheinungstermin: g;1i\
Amazon Neuerscheinung mit Stand vom 25.06.2009\
' > Lauf4


Auch mit den Links von LotPings (danke dafür) hatte ich mich beschäftigt.
Das cat habe ich aber erstmal drin gelassen, damit ich nur am Ende editieren muss.

Und in diesen Beiträgen habe ich "nur" gefunden , dass man direkt die Tab-Taste nutzt oder zB Strg V + Strg I eingibt.
Dass führt aber beides dazu, dass in der Zeile der Tab-Sprung auch ausgeführt wird. Und ich dachte, dass es dafür
vielleicht ein eigenes Kürzel (aus zB 2 Zeichen) gibt.

Deinen Vorschlag
sed -e 1i"\Das ist eine Überschrift\\toben" -i DATEI
habe ich so eingetippt (meine Datei heißt Lauf0):
sed -e 1i"\Das ist eine Überschrift\\toben" -i Lauf0
Als Ergebnis bekomme ich leider eine Fehlermeldung:
sed: 0602-404 Function 1i\Das ist eine Überschrift\toben cannot be parsed.
Also weder Tab noch Zeilenumbruch ...

Insofern bleibt meine Frage bestehen: wie kann ich einen Zeilenumbruch per Kürzel so eingeben,
dass ich keinen echten Zeilenumbruch eingeben muss, d.h.
anstatt

...;1i\
Amazon Neuerscheinung mit Stand vom 25.06.2009\
' > Lauf4


hätte ich gerne

...;1i\??Amazon Neuerscheinung mit Stand vom 25.06.2009\??==...==' > Lauf4

wobei die ?? für das Kürzel stehen.

Danke
Oliver
Bitte warten ..
Mitglied: paulepank
29.06.2009 um 18:00 Uhr
Hallo,

ich kenne deine Unix und sed-Version nicht.
Auf zwei Linuxdistributionen mit der GNU Version von sed läuft das ohne Fehler.
habe ich so eingetippt
Vielleicht versuchst du es mit Copy&Paste.
sed: 0602-404 Function 1i\Das ist eine Überschrift\toben cannot be parsed
hast du bestimmt schon recherchiert.

Mag ja sein, daß du mittlerweile etwas gelesen hast, aber die Grundlagen fehlen immer noch.
Preisfrage:
Nachdem du mit \t den Tabulator kennst, wie wird das Newline dargestellt ?
Grundlagen zum lesen hier

cu paulepank

Edit: .. und es kommt auf die Shell an. Mein Beispiel ist mit der Bash getestet
Bitte warten ..
Mitglied: LotPings
29.06.2009 um 18:05 Uhr
Zitat von paulepank:
Preisfrage:
Nachdem du mit \t den Tabulator kennst, wie wird das
Newline dargestellt ?
Grundlagen zum lesen hier
Ergänzend vielleicht noch dies

Gruß
LotPings
Bitte warten ..
Mitglied: ozabel
29.06.2009 um 19:16 Uhr
Hallo Ihr zwei,

Ihr denkt bestimmt schon dass ich etwas beschränkt bin. Aber bei mir klappt es einfach nicht.
Das "\n" ist mir durchaus geläufig (nutze ich zB bei "printf", aber ich kann es in der sed-Zeile scheinbar nicht nutzen,
und ich habe von \n bis \\\n alles probiert .

Ich nutze AIX5.3.

Ich werde jetzt mal die einzelnen Schritte hier reinkopieren:

Der funktionierende Befehl (mit echtem Zeilenumbruch)
cat Lauf0 | sed -e '1i\
Hallo'

ergibt in der history den Befehl
cat Lauf0 | sed -e '1i\^JHallo'

Ziel wäre es also, das ^J durch eine Zeichenkombination auf der Kommandozeile eingeben zu können.
Ein echtes ^J funktioniert natürlich nichts.

So, und jetzt der Versuch mit \n

cat Lauf0 | sed -e '1i\\nHallo'

mit Ergebnis
sed: 0602-404 Function 1i\\nHallo cannot be parsed.


Auch die Musterzeile
sed -e 1i"\Das ist eine Überschrift\\toben" -i DATEI
funktioniert nicht.

Umgewandelt in
sed -e '1i\
Das ist eine Überschrift\\toben' DATEI

klappt zumindest die Funktion "i", aber mit Ergebnis
Das ist eine Überschrift\toben
Zeile 1
Zeile 2

Also auch nichts mit Tabulator - den kann ich aber auch wieder hart eingeben
Eingabe (...... stellt TAB dar):
sed -e '1i\
Das ist eine Überschrift\
........mit einem TAB' DATEI

wird zu
sed -e '1i\^JDas ist eine Überschrift\^J......mit einem TAB' DATEI

mit Ergebnis
Das ist eine Überschrift
........mit einem TAB
Zeile 1
Zeile 2

Wir Ihr seht versuche ich vieles aber bekomme kein Ergebnis hin ....

Hat noch jemand eine Idee?
Bitte warten ..
Mitglied: paulepank
29.06.2009 um 19:28 Uhr
äh, da war noch die Frage nach der sed Version und der Shell

cu paulepank
Bitte warten ..
Mitglied: ozabel
29.06.2009 um 19:32 Uhr
AIX 5.3.
Kornshell

Wie bekomme ich denn die sed-Version heraus?
Die AIX-Version sehe ich ja beim Anmelden, aber die von sed?
Bitte warten ..
Mitglied: paulepank
29.06.2009 um 19:39 Uhr
im Zweifel: sed --help
dort steht bestimmt sed --version
Bitte warten ..
Mitglied: ozabel
29.06.2009 um 19:45 Uhr
Leider nein. "Help" geht nicht, aber mit "man" bekommt man ja die Hilfe angezeigt, doch auch dort weder im Kopf noch am Fuß ein Hinweis auf die Version (hatte ich auch vorhin schon dort gesucht).
Vielleicht ist es die ganz einfache Version von sed?
Bitte warten ..
Mitglied: paulepank
29.06.2009 um 20:02 Uhr
was ist mit sed -h bzw
sed -V

cu paulepank
Bitte warten ..
Mitglied: ozabel
29.06.2009 um 20:05 Uhr
Weder noch ... (und auch nicht groß/klein)

>sed -V
sed: Not a recognized flag: V
Usage: sed [-n] Script [File ...]
sed [-n] [-e Script] ... [-f Script_file] ... [File ...]

Oliver
Bitte warten ..
Mitglied: paulepank
29.06.2009 um 20:20 Uhr
für mich wars das hier. Habe keine Dokus
Tipp für dich:
aktualisiere sed auf die neueste Version (besser lasse aktualisieren, denn du bist ja nicht der Admin) oder besser, nutze ein zeitgemäßes BS.
Zum Einfügen von ein paar Zeilen braucht man auch keinen sed (zb cp)

In der ksh funktioniert mein Code auch.
Nächstes mal bitte gleich mehr Angaben zu der Softwareumgebung und keine Codebruchstücke.

cu paulepank
Bitte warten ..
Mitglied: ozabel
29.06.2009 um 20:22 Uhr
In Ordnung.
Aktualisierungen sind natürlich/leider nicht möglich ...
Danke für Deine Hilfe.

Oliver
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Linux
gelöst URL und Username aus HTML-Datei extrahieren - sed, grep (4)

Frage von plutowitsch zum Thema Linux ...

PHP
gelöst PHP XML Statt Semikolon ein Zeilenumbruch (2)

Frage von Judo99 zum Thema PHP ...

Windows Tools
gelöst Zeilenumbruch via Batch in eine Txtdatei einbauen (6)

Frage von Ironhead-Hayns zum Thema Windows Tools ...

Batch & Shell
gelöst String mit Zeilenumbruch per Bash ersetzen (1)

Frage von StefanKittel zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...