Ho un file chiamato .ignore. Necessario sostituire il projdir. Per esempio:
ignore \..*
ignore README
projdir Snake
Devo sostituire Snake con, ad esempio, "PacMan". Ho letto la pagina man, ma non ho idea di cosa fare.
Ho un file chiamato .ignore. Necessario sostituire il projdir. Per esempio:
ignore \..*
ignore README
projdir Snake
Devo sostituire Snake con, ad esempio, "PacMan". Ho letto la pagina man, ma non ho idea di cosa fare.
Risposte:
Cerca una riga che inizia con projdire sostituisci l'intera riga con una nuova:
sed -i 's/^projdir .*$/projdir PacMan/' .ignore
^e $sono marcatori di inizio / fine linea, quindi il motivo corrisponderà all'intera linea; .*corrisponde a qualsiasi cosa. La -idice seddi scrivere le modifiche direttamente .ignore, invece di di riproporli
Un approccio consiste nel riscrivere l'intera riga, utilizzando i riferimenti indietro per le parti che si desidera conservare:
sed -e 's/^\( *projdir *\)[^ ]*\(.*\)*$/\1PacMan\2/'
Un altro approccio è quello di riscrivere quella parte della riga, ma solo se qualche altra parte corrisponde:
sed -e '/^ *projdir / s/ [^# ]/ PacMan/'
Entrambi gli esempi riscrivono la seconda parola delimitata da spazi bianchi su righe in cui si trova la prima parola projdir.
Anche se questo è un vecchio post e sembra essere stato risolto per te dalla risposta accettata, la vera domanda non ha ricevuto risposta. Quindi per completezza e per aiutare gli altri:
Qui la risposta che corrisponde effettivamente a "Snake" e non alle righe che iniziano con "projdir" ...
sed -r 's/(^.*)Snake/\1PacMan' .ignore
Questo sostituisce tutto dall'inizio della linea incluso "Snake" con tutto prima di "Snake" + "PacMan". \ 1 sta per cosa corrisponde all'interno (). Tutto dopo "Snake" rimane intatto.
sed -i 's:^projdir.*$:projdir PacMan:g' .ignore
^ projdir è trovare la linea che inizia con projdir stringa. Il. * $ Indica la stringa dopo projdir nella stessa riga. Il proManager di stringa PacMan è la stringa con cui stiamo sostituendo. g sta per global - per sostituire tutte queste righe a partire da projdir. .ignore è il nome del file