ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
1864
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Buba235 ist offline Mitglied Brokat
    Registriert seit
    Apr 2006
    Beiträge
    280
    Hallo Leute!

    Ich habe ein kleines Problem, von dem ich momentan nicht weiß, wie ich es lösen soll. Vielleicht könnt ihr mir helfen.
    Hier mal mein Szenario: Ich habe ein kleines bash script, mit dem ich eine Datei (genauer eine Visual Studio vcxproj Datei) einlesen und bestimmte Zeilen suche. Wenn ich die besagten Zeilen efunden habe, dann hole ich mir einen bestimmten Inhalt dieser Zeile und speichere ihn in einer Variable. Diese Variable (das ist ein absoluter Pfad) verändere ich gleich darauf und möchte sie in eben dieser gefundenen Zeile gleich wieder einsetzen. Das ist auch mein Problem.

    Hier erst mal mein Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    while read line
    do
        if [[ "$line" =~ "<ProjectReference Include=" ]]; then
            projects=${line}
            projects="${projects#\<ProjectReference Include=\"}"
            projects="${projects#\    <ProjectReference Include=\"}"
            projects="${projects%\vcxproj\">}"
            projects=`cygpath -u $projects`
     
            PROJECT=($(perl -MFile::Spec -e 'print File::Spec->abs2rel("'$projects'","'$CURRENT'")'))
            sed -i -e "s#\(<ProjectReference Include=\"\)\(.*\)#\1${PROJECT}vcxproj\">#" VS_DATEI.vcxproj
        fi
    done < VS_DATEI.vcxproj

    Das was ich in obigen Code mache klappt ja wunderbar, nur leider auf alle vorkommenden Zeilen mit dem "Marker" <ProjectReference Include=". Ist ja eigentlich auch logisch, da sed ja alle Vorkommen ersetzt, aber ich brauche leider eine Zeile für Zeile "Ersetzung" mit dem jeweiligen modifizierten Pfad. Kann mir da jemand helfen?

    Danke schon mal
    Buba
     
    -- Wer auch nur etwas Freiheit für mehr Sicherheit aufgibt, ist beides nicht wert! --

  2. #2
    Buba235 ist offline Mitglied Brokat
    Registriert seit
    Apr 2006
    Beiträge
    280
    Hallo!

    Okay ichhabe eine Lösung gefunden. Mein Ansatz nur bestimmte Zeilen zu ändern ist folgender:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    # read in the whole file and find the <AdditionalIncludeDirectories> tag
    # to get the include list
     i=0
    while read line
    do
        if [[ "$line" =~ "<ProjectReference Include=" ]]; then
            projects=${line}
            projects="${projects#\<ProjectReference Include=\"}"
            projects="${projects#\    <ProjectReference Include=\"}"
     
            # get the complete line
            TMP[$i]=$projects
            projects="${projects%\vcxproj\">}"
            projects=`cygpath -u $projects`
     
            PROJECT=($(perl -MFile::Spec -e 'print File::Spec->abs2rel("'$projects'","'$CURRENT'")'))
            PROJ_PATHS[$i]=$PROJECT
            i=$((i+1))
        fi
    done < VS_DATEI.vcxproj
     
    # insert all relative paths in the file
    typeset -i j=0 max=${#PROJ_PATHS[*]}
    while (( j < max ))
    do
        LINE="<ProjectReference Include=\"${TMP[$j]}"
        REPL="<ProjectReference Include=\"${PROJ_PATHS[$j]}vcxproj\">"
        sed -i -e "s#${LINE}#${REPL}#" VS_DATEI.vcxproj
        j=$((j+1))
    done
     
    -- Wer auch nur etwas Freiheit für mehr Sicherheit aufgibt, ist beides nicht wert! --

Ähnliche Themen

  1. Bash Script
    Von Spranta im Forum Sonstige Sprachen
    Antworten: 2
    Letzter Beitrag: 23.06.08, 12:52
  2. bash - Script aus Script starten -> Aufgehangen
    Von ElDoc im Forum Linux & Unix
    Antworten: 0
    Letzter Beitrag: 06.05.08, 11:39
  3. bash: Zeilen von Dateien zählen
    Von DarthShader im Forum Linux & Unix
    Antworten: 5
    Letzter Beitrag: 28.04.07, 03:09
  4. Bash Script?
    Von flashray im Forum Java
    Antworten: 1
    Letzter Beitrag: 26.10.06, 16:55
  5. Bash script
    Von myrip im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 02.05.06, 14:42