The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
dont't trovare diritto regex trekking Shell scripting e di programmazione 3 05-27-2008 01:20 PM
regex prova in bash subin_bala Shell scripting e di programmazione 1 04-16-2008 04:27 AM
Semplice script bash? JayC89 Shell scripting e di programmazione 16 10-02-2007 08:23 PM
find-regex: corrispondenza più estensioni r0sc0 Shell scripting e di programmazione 2 12-08-2005 02:32 PM
comando bash trovare restituito: / usr / bin / trovare: Argomento elenco troppo lungo yacsil Shell scripting e di programmazione 1 12-15-2003 06:38 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 03-17-2008
srikanths srikanths is offline
Utente Registrato
  
 

Iscriviti Data: marzo 2008
Interventi: 4
Un semplice trovare e sostituire senza l'uso di espressioni regolari (bash)

Salve,

Ho bisogno di fare una esatta trovare e sostituire (non voglio usare le espressioni regolari, perché l'input proviene da utente). Vorrei trovare una riga che corrisponde l'utente di ingresso del testo e la sostituisce con una stringa vuota.

Per esempio, diciamo che l'utente inserisce I love "Unix" e il contenuto del file in cui voglio fare è trovare e sostituire questo:

Codice:
I like "Unix" more than DOS
I love "Unix"
I said I love "Unix"
I love "Unix" a lot
Ora vorrei sostituire la linea I love "Unix" con la stringa vuota. E voglio lasciare i rimanenti linee come Ho detto che l'amore "Unix" e I love "Unix" molto come è. Il doppio virgolette sono intenzionali.

Unix di utilità che può fare questo? Un esempio potrebbe essere grande! Ho cercato e trovato che sed qualcosa di simile è quello che sto cercando, ma ci vuole una espressione regolare. Dato che la stringa di input è venuta da parte degli utenti, è difficile per me, per generare una espressione regolare per questo. Altri modi?

Grazie!
  #2 (permalink)  
Old 03-18-2008
epoca
Valutazione
  
 

Messaggi: n / a
Bit: 0 [Banking]
man grep

Codice:
read input
fgrep -vx "$input" file
Si elimina completamente la linea, e non anche lasciare la riga vuota. Se hai bisogno di una nuova riga per l'essere conservato, è un po 'più difficile.

Non è troppo difficile da generare una vera e propria espressione regolare, di per sé, ma tende ad essere un po 'brutto.

Codice:
read input
echo "$input" | sed -e 's/[][\\.*^$]/\\&/g; s/.*/s%^&\$%%/' | sed -f - file
Si tratta di testate, e destinato unicamente come una prova del concetto. Ho dimenticato, probabilmente uno o due caratteri speciali che devono essere di tipo escape backslash. (Suggerimento: eliminare la parte finale del gasdotto per visualizzare lo script generato.)
  #3 (permalink)  
Old 03-18-2008
epoca
Valutazione
  
 

Messaggi: n / a
Bit: 0 [Banking]
Oh, e se siete veramente rigorosi bash, provate questo:

Codice:
read input
while read line; do
  case $line in
    $input) echo ;;  # or not, if you want the newline gone, too
    *) echo "$line";;
  esac
done <file
Closed Thread

Segnalibri

Tag
regex, le espressioni regolari

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 12:58 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0