Über die Shell eine Datei bearbeiten?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Badgott
Beiträge: 40
Registriert: 14.02.2005 12:25:41

Über die Shell eine Datei bearbeiten?

Beitrag von Badgott » 03.08.2005 12:22:10

Hallo,
ich suche derzeit eine möglichkeit über einen editor (Shell) eine Datei zu bearbeiten .
Es sollte möglich sein über ein Command (evtl mit pipes) die Datei zu öffnen etwas ans ende einzufügen oder etwas zu suchen und dann zu bearbeiten oder zu löschen nach denn änderungen die datei zu speichern und zu schließen.

Ist das über eine verkettung von Commands machbar oder sollte ich doch lieber perl benutzen über die shell würde das einiges an arbeit ersparen.


Vielen dank im vorraus.

Grezz Badgott

Benutzeravatar
mauser
Beiträge: 1854
Registriert: 27.01.2005 22:34:48

Beitrag von mauser » 03.08.2005 12:24:43

hi,

du solltest dir mal die programme sed und awk anschauen. die machen so ziemlich genau das was du willst. natürlich kannst du es auch per perl lösen, ist wahrscheinlich eine glaubensfrage..
mfg
mauser

yeti

Beitrag von yeti » 03.08.2005 12:24:51

Überflieg mal die Manuals von "ed" und "sed"...

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 03.08.2005 12:48:42

Mit ex kann man sowas auch machen, hier eine Hilfe-Seite:

http://www.unix.org.ua/orelly/unix/vi/ch07_04.htm

Ganz kleines Beispiel von mir: ich habe eine Textdatei, in der ich die Zahlen 50000000 durch 10000000 on-the-fly ersetzen will:

Code: Alles auswählen

ex -s - textdatei.txt <<__EOF__
g/50000000/ s/50000000/10000000/
:wq
__EOF__
(ist jetzt aber nur schnell hingepinnt, also ungetestet).

gruss, mistersixt.
--
System: Debian Bookworm, 6.5.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 4.0 Ghz., Radeon RX 5700 XT, 16 GB Ram, XFCE

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 04.08.2005 13:04:13

Statt Perl kannst du auch Ruby oder Python benutzen, wenn du das lieber magst ^-^ und Perl noch nicht kannst.
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 04.08.2005 13:25:41

Leonidas hat geschrieben:Statt Perl kannst du auch Ruby oder Python benutzen, wenn du das lieber magst ^-^ und Perl noch nicht kannst.
jaja.. Werbung muss schon sein 8) auch wenn ich eher zu Shellskripten raten würde.. die funktionieren eher überall als Perl, Python oder Ruby
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 04.08.2005 15:26:31

Savar hat geschrieben:jaja.. Werbung muss schon sein 8)
Ja, sicher doch :D
Savar hat geschrieben:auch wenn ich eher zu Shellskripten raten würde.. die funktionieren eher überall als Perl, Python oder Ruby
Da hast du wohl recht.. obwohl ich mich mit der grausigen Syntax von so lustigen Tools wie sed nie anfreunden konnte.
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

Benutzeravatar
QT
Beiträge: 1257
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 04.08.2005 15:33:46

"Echte Maenner" machen das mit 'dd' :lol:

Nein, im Ernst die Shelltools sind hier schon gut geeignet und wie schon gesagt wurde vermutlich am kompatibelsten im Vergleich zu Perl, Python, Ruby et al...

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 04.08.2005 16:16:10

Ich bin zwar Python-Fan, aber für komplexere Textverarbeitung nehme ich dann auch perl, dafür wurde die Sprache ja auch entwickelt. Und Perl ist mittlerweise auch als Standard in Unix-Kreisen anzusehen. Für simple search-and-replace aufgaben nutze ich jedoch auch sed oder awk.

Benutzeravatar
mauser
Beiträge: 1854
Registriert: 27.01.2005 22:34:48

Beitrag von mauser » 04.08.2005 17:16:38

was mich manchmal an shellskripten stört, die auf vermeintliche "standart"-utilities zurückgreifen, ist der fakt das diese standarts halt manchmal nicht existieren ;-)
Ich meine z.b. diese nervigen Sachen wenn ein Tool wie sed auf AIX etwas anders arbeitet wie auf Linux oder so. Meistens benutzt man ja auch eine ganze Toolchain, also viele kleine Programme die verpiped sind. Und wenn dann mal irgendwo ein programm streikt, weil IBM die Option, die ich nutzen will, nicht implementiert hat, dann bekomm ich anfälle..
Für Linux sind shellskripte total OK, naja bis auf die Syntax. Aber wenn man mehrere Betriebssyteme abdecken will, greife ich doch lieber auf eine Sprache zurück, die mir fest definierte Funktionen liefert. (das gilt natürlich nur für textverarbeitung und sysadmin sachen, wenn man dann sachen wie threads benutzt etc. is das wieder ne andere leidensgeschichte..)
mfg
mauser

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 04.08.2005 17:24:06

was ist denn an der Syntax (Regexp) von sed soviel anders als zu anderen Skriptsprachen (z.B. Perl)?? Nur sehr marginal.. wer mit Perl regex machen kann, kann meißtens auch sed..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
mauser
Beiträge: 1854
Registriert: 27.01.2005 22:34:48

Beitrag von mauser » 04.08.2005 17:38:46

nichts, ausser das in perl die regexps besser eingebunden sind als in den meisten anderen sprachen. das meinte ich aber nicht in meinem post von grade, falls du das darauf bezogen hattest.. ich meinte nicht das es einen unterschied zwischen der perl und der sed regexp syntax gibt, sondern von den kommandozeilen optionen zwischen tool X auf AIX (oder einem anderen unix.. ) und tool X auf linux.

Benutzeravatar
QT
Beiträge: 1257
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 05.08.2005 08:04:37

Mauser, ich weiss ganz genau, was Du meinst und bin auch schon oefters in diese Falle getreten. Da hilft nur eins, Du musst fuer den kleinsten gemeinsamen Nenner scripten und dieser wird sicher von den proprietaeren UN*X Systemen gestezt und nicht von Linux. Ansonsten hilft oft, die GNU Versionen der Tools auch auf den UN*X Systemen zu installieren, sofern dies moeglich ist...

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 05.08.2005 08:08:04

QT hat geschrieben:Ansonsten hilft oft, die GNU Versionen der Tools auch auf den UN*X Systemen zu installieren, sofern dies moeglich ist...
Aber nicht auf 15 Server :-( mal davon abgesehen das wir das nichtmal dürfen, da die Systemhersteller die auch teilweise die Server stellen eine spezielle Umgebung fordern..

:cry:

ich will meine GNU's (schon mal versuch auf Solaris rekursiv in Dateien zu greppen? Einziger (unschöner) Weg: find mit -print und -exec...
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
QT
Beiträge: 1257
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 05.08.2005 08:23:07

Savar, ja, ich weiss genau, wovon Du sprichst! In den letzten 10 Jahren war ich bei so viel Kunden und jeder nutzt was anderes. Mal HP-UX, mal DEC, mal AIX, mal Solaris etcpp, und ich sag ja, ich bin schon oft selbst in diese Problematik reingelaufen. Auch frage ich bei Kunden nie, ob ich GNU Tools installieren kann. Es geht halt einfach nicht und daher nutze ich idR 'awk' und schreibe die Scripts so, dass sie auf moeglichst vielen Plattformen laufen.

Ja, auch rekursives grep hab ich schon oft vermisst und mit der von Dir genannten Methode nachempfunden. Ich find allein schon die Standardinstallation von einem proprietaeren UN*X nicht ihr Geld wert. Da hast Du ein PS1=$ und das wars. Da wird mir dann auch oft klar, warum viele das als 'nuzterunfreundlich' empfinden. Die Usability der Korn Shell ist auch ne Sache fuer sich :?

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 05.08.2005 08:42:20

hihi.. Kornshell.. aber schlimmer ist die csh.... keine Funktionen.. nur die "Entf" Taste (meistens) und so weiter
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Antworten