GNU/Linux >> Linux Esercitazione >  >> Linux

Rimuovi un carattere specifico usando awk o sed

Usa la sostituzione di sed:sed 's/"//g'

s/X/Y/ sostituisce X con Y.

g significa che tutte le occorrenze devono essere sostituite, non solo la prima.


Usando solo awk potresti fare (ho anche accorciato alcune delle tue piping):

strings -a libAddressDoctor5.so | awk '/EngineVersion/ { if(NR==2) { gsub("\"",""); print $2 } }'

Non posso verificarlo per te perché non conosco il tuo input esatto, ma funziona quanto segue:

echo "Blah EngineVersion=\"123\"" | awk '/EngineVersion/ { gsub("\"",""); print $2 }'

Vedi anche questa domanda sulla rimozione delle virgolette singole.


tr può essere più conciso per la rimozione dei caratteri rispetto a sed o awk , soprattutto quando desideri rimuovere più caratteri diversi da una stringa.

Rimozione delle doppie virgolette:

echo '"Hi"' | tr -d \"
# Prints Hi without quotes

Rimozione di diversi tipi di parentesi:

echo '[{Hi}]' | tr -d {}[]
# Prints Hi without brackets

-d sta per "cancella".


Linux
  1. Come rimuovere i caratteri non ascii usando sed

  2. Elimina le righe vuote usando sed

  3. Come rimuovere il carattere \r con sed

  4. Come rimuovere un file senza usare rm?

  5. Utilizzo di AWK per selezionare righe con un valore specifico in una colonna specifica

Come rimuovere le righe da un file usando il comando Sed

Come eliminare le righe vuote nei file utilizzando Grep, Sed e Awk

sed - come creare gruppi regex usando sed

usando awk con le condizioni del valore della colonna

Usando grep vs awk

Come modificare un file sul posto usando awk? (come con sed -i)