mikrocontroller.net

Forum: PC Hard- und Software Mit sed suchen und das gefundene bei der ausgabe wiederverwenden.


Autor: Mr. Pi (mr-pi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,


ich möchte mit sed eine Liste mit Nummer durchsuchen,
und vor alle Nummern, die mit 473 beginnen und noch 2 weiter Zeichen 
haben,
ein --- schreiben.
Des weiteren soll hinter den Treffern ein ... erscheinen.

Ich habe es mit
sed 's/473../---.....\.\.\./g'
und ähnlichen versucht aber alles falsch.

Für eine Lösung wäre ich Dankbar,
   Mr. Pi

Autor: Sabine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sabine@phenom-ubuntu:~$ cat file1.txt
12345
473xxxx
47312
473ab
8765432

sabine@phenom-ubuntu:~$ awk '{ if ( $0 ~ /^473..$/ ) { print "---" $0 
"..." ; } else { print ; } }' file1.txt
12345
473xxxx
---47312...
---473ab...
8765432

sabine@phenom-ubuntu:~$ awk '{ if ( $0 ~ /^473..$/ ) { print "---" $0 
"..." ; } else { print ; } }' file1.txt > new_file.txt



Ist es das, was Du willst?

Autor: Spade, Sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man auch mit der bash machen. Ungefähr so:

modify ()
{
  while read line
  do
    if [[ "$line" ==  "*473??" ]]; then
      line="---"${line#473??}
    fi
    echo $line
  done < "myfile"
}

Autor: Sabine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Spade, Sam :

Ich habe es ausprobiert: Dein Script funktioniert nicht. Also wirklich 
nur "ungefähr so".

@ all :
Es würde mich aber interessieren, ob man es in der Art in der bash 
hinbekommt. Könnte das Problem ein bach-Erfahrener mal lösen?

Autor: Mr. Pi (mr-pi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,

für die Antworten, nur brauche ich leider eine bash Lösung die immer 
geht,
read schmiert leider das ein oder andere mal ab, warum weis keiner.

Also trotzdem Danke, vor allen dir Sabine, deine Lösung tut und falls 
sich keine andere findet, muss ich halt darum betteln, das 'awk' in 
meine shell mit aufgenommen wird :-( .

Vielleicht findet Ja noch irgend ein Bastler die Lösung.


Mit freundlichen Grüßen,
   Mr. Pi

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meinst du so?
G:\>cat test1.txt | sed "s/^\(473..\)$/---\1.../"
12345
473xxxx
---47312...
---473ab...
8765432

Autor: Tom K. (ez81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$ cat f1.txt 
12345
473xxxx
47312
473ab
8765432
147300

$ cat f1.txt | sed -r -e's/^(473..)$/---\1.../g'
12345
473xxxx
---47312...
---473ab...
8765432
147300

Tut das, was du willst?

Grüße


EDIT: Mist, zu langsam ;)

Autor: Mr. Pi (mr-pi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DANK,

es geht und das auch noch mit sed ihr seit meine Helden, BEIDE.
(auch wenn der eine nicht so schnell geschrieben hat ;-) ).

Mit freundlichen Grüßen,
   Mr. Pi

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.