nur mehrfach vorkommende ausdrucke ausgeben

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von L0rd, 24.02.2012.

  1. L0rd

    L0rd Mitglied

    Dabei seit:
    28.04.2006
    Beiträge:
    38
    Zustimmungen:
    0
    Hallo,

    habe eine datei "test" das aus 2 Spalten besteht getrennt mit ">". Wie gebe ich nur die Zeilen aus bei dennen die erste Spalte (also alles was bis ">" steht) mehrmals vorkommt ?



    Code:
    
    echo "0-;0-;2-16_35;>;4,455;38;
    0-;0-;2-26_35;>;1,070;18;
    0-;0-;2-26_35;>;3,221;30;
    0-;0-;2-26_35;>;5,156;32;
    0-;0-;2-32_35;>;1,284;42;
    0-;0-;2-32_35;>;1,328;40;
    0-;0-;2-32_35;>;1,881;38;
    0-;0-;2-32_35;>;2,826;36;
    0-;0-;2-32_35;>;3,171;34;
    0-;0-;2-32_35;>;6,693;32;
    0-;0-;2-32_35;>;,794;44;
    0-;0-;3-1_17_35;>;2,537;32;
    0-;0-;3-1_3_37;>;,721;42;
    0-;0-;4-14_25_27_29;>;2,859;28;
    0-;0-;6-1_3_5_7_17_35;>;4,089;34;
    0-;1-10;1-13;>;29,893;30;
    0-;1-10;1-14;>;,908;14;
    0-;1-10;1-17;>;6,989;18;
    0-;1-1;1-1;>;,790;12;
    0-;1-1;1-26;>;1,942;38;
    0-;1-1;2-1_28;>;2,726;16;" > test;
    
    
    habe schon mal mit verschiedenen Schalter von uniq probiert

    Code:
    tr '\t' '>' <  test | uniq -f 1 -D
    
    leider klappt es nicht :(

    Danke
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Gast123, 24.02.2012
    Zuletzt von einem Moderator bearbeitet: 24.02.2012
    Gast123

    Gast123 Guest

    Meinste sowas:

    Code:
    while read LINE; do
     if [ "`echo $LINE | cut -d ">" -f 1`" ==  "`echo $LINE | cut -d ">" -f 2`" ]; then
      echo $LINE
     fi
    done < test
    
    EDIT: Problem missverstanden :(

    So sollte es gehen:
    Code:
    #! /bin/bash
    
    FILE=$1
    
    while read FIRST_LINE; do
    	FIRST_COLUMN_FIRST_LINE="`echo $FIRST_LINE | cut -d ">" -f 1`"
    	MATCHES=0
    
    	while read SECOND_LINE; do
    		FIRST_COLUMN_SECOND_LINE="`echo $SECOND_LINE | cut -d ">" -f 1`"
    		if [ "$FIRST_COLUMN_FIRST_LINE" == "$FIRST_COLUMN_SECOND_LINE" ]; then
    			MATCHES=$(($MATCHES+1))
    		fi
    	done < $FILE
    
    	if [ $MATCHES -gt 1 ]; then
    		echo $FIRST_LINE
    	fi
    done < $FILE
    Läuft in O(n²) - ohne Beweis :D
     
  4. doc

    doc Kaffeetrinker

    Dabei seit:
    26.08.2006
    Beiträge:
    586
    Zustimmungen:
    0
    Ort:
    bremen
    Code:
    awk -F\> '{print $1}' test |uniq -c |awk '{sub(/^[ \t]+/, "")};1'| grep -v ^1 |awk '{print $2}' |while read line; do grep ^$line test;done
    so gehts auch
     
  5. #4 Gast123, 24.02.2012
    Gast123

    Gast123 Guest

    Wer awk kann ist klar im Vorteil XD
     
  6. L0rd

    L0rd Mitglied

    Dabei seit:
    28.04.2006
    Beiträge:
    38
    Zustimmungen:
    0
    da kann ich Schard nur Recht geben

    danke ! es funktioniert

    kann man da vielleicht auch Mindestanzahl von gleichen Ausdrucken vorgeben ? z.B. ab 5
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 Gast123, 24.02.2012
    Zuletzt von einem Moderator bearbeitet: 24.02.2012
    Gast123

    Gast123 Guest

    Bei meinem Skript ginge das, indem du
    Code:
    if [ $MATCHES -gt 1 ]; then
    		echo $FIRST_LINE
    	fi
    durch
    Code:
    if [ $MATCHES -gt 5 ]; then
    		echo $FIRST_LINE
    	fi
    ersetzt

    Mit awk kenne ich mich, wie zuvor gesagt, leider nicht aus. :))
     
  9. doc

    doc Kaffeetrinker

    Dabei seit:
    26.08.2006
    Beiträge:
    586
    Zustimmungen:
    0
    Ort:
    bremen
    Code:
    [B]anzahl=5;[/B]awk -F\> '{print $1}' test |uniq -c | awk '$1 >= "'"$anzahl"'" {print $2}' |while read line; do grep ^$line test;done
     
Thema:

nur mehrfach vorkommende ausdrucke ausgeben

Die Seite wird geladen...

nur mehrfach vorkommende ausdrucke ausgeben - Ähnliche Themen

  1. Jibo: Linux-»Familien-Roboter« erreicht Mehrfaches des Finanzierungsziels

    Jibo: Linux-»Familien-Roboter« erreicht Mehrfaches des Finanzierungsziels: Die Unternehmerin Cynthia Breazeal will einen familienfreundlichen, Linux-basierten Roboter schaffen. Die Finanzierung dazu läuft über Indiegogo...
  2. mehrfache IP-Adressen finden

    mehrfache IP-Adressen finden: Hallo, gibt es einen Weg herauszufinden, ob eine bestimmte IP-Adresse innerhalb eines Netzwerkes mehrfach vergeben ist? z.B. mit nmap, ping,...
  3. USB HDD 'Mehrfach Mount'

    USB HDD 'Mehrfach Mount': Howdy! Ich bastel zZ an meinem Media System fuer meinen TV. Nun stehe ich vor der Aufgabe, meinen DVB-S Receiver (mit USB Port zum Anschluss...
  4. mehrfaches mounten mit mount -o ro

    mehrfaches mounten mit mount -o ro: Hallo! Ich habe mir für einen ssh-Nutzer ("user1") eine chroot-Umgebung eingerichtet. Ziel soll es sein, dass er nur lesend auf das Verzeichnis...
  5. Mehrfaches Ersetzen mit sed

    Mehrfaches Ersetzen mit sed: Hallo Leute, wie bekomme ich das kürzer hin, z.B. in eine Zeile oder Schleife. Arrays kann ich nicht wirklich was mit anfangen? #!...