Sto eseguendo sed come parte di uno script di shell per pulire i registri di bind per l'inserimento in un database.Limitazione SED ai primi 10 caratteri di una riga
Uno dei comandi sed è la seguente:
sed -i 's/-/:/g' $DPath/named.query.log
Questo si rivela essere problematico, in quanto interrompe eventuali richieste di risorse che includono anche un trattino (sto usando: come delimitatore per un'istruzione awk più in basso).
La mia domanda è come limitare il comando sed sopra solo ai primi dieci caratteri della linea? Non ho visto un interruttore specifico che faccia questo, e non sono neanche lontanamente abbastanza bravo con RegEx per iniziare a sviluppare uno che funzioni. Non posso semplicemente usare regex per abbinare i numeri precedenti perché è possibile che il pattern possa far parte di una richiesta di risorsa. Diamine, non posso nemmeno usare la corrispondenza dei modelli per #### - ## - ## perché, ancora una volta, potrebbe essere parte della risorsa.
Tutte le idee sono molto apprezzate.
Signore, penso che lo farò. Grazie mille! – MikeH
Supporta anche (non verificato) 'perl -pe '($ _, 0, 10) = ~ s /:/-/g' file – tripleee
@ tripleee: Il tuo commento (non testato) non funziona per me (ma io non so perl). –