Come rimuovere M caratteri?
Domanda
Ho un file generato dalle finestre che devo incollare in uno script sotto linux. Il mio script funziona bene, tranne per il fatto che alla fine di ogni riga ho ottenuto un ^ M char.
Come faccio a rimuovere con bash?
Al momento il mio script è:
#/bin/bash
IFS=$'\n'
for CUSTOMER in `cat exp.csv`
do
echo $CUSTOMER
done
Soluzione
dos2unix su exp.csv
prima di ulteriori trasformazioni.
Altri suggerimenti
^ M dovrebbe essere finestre capo \ r, quindi è sufficiente rimuovere tutti \ r È possibile ottenere questo utilizzando lo strumento TR, che è possibile chiamare dal proprio script bash, questo è alle voci di Wikipedia (non ho verificarlo):
tr -d '\r' < inputfile > outputfile
Quindi, da bash dovrebbe essere qualcosa del tipo
VAR=`echo -n $CUSTOMER | tr -d '\r'`
Lo faccio molto con tr
. Il carattere CR è 013 in ottale:
tr -d '\013' < $FILE
Quindi nel tuo ciclo, che sarebbe solo
for CUSTOMER in `tr -d '\013' < exp.csv`
comando dos2unix ont lui file
ci sono diversi modi per rimuovere cattivo char M
dal file
- Comando uso
dos2unix file_name
- file aperto in editor vi, andare a
modalità di comando e tipo
:%s/ctrl+v ctrl+m//g
questo rimuoverà tutti i cattivi caratteri da si file. ora utilizzare:wq
per salvare ed uscire -
sed -e "s/^M//" filename(exist file name) > newfilename(new name)
sed -e "s / ^ M //" nome del file (nome del file esiste)> newfilename (nuovo nome)
NOTA: per trovare cattive caratteri sul colpo server UNIX sotto comando per tutti i file java
find . -name "*.java*" -type f | xargs grep -l ^M *
Allo stesso modo è possibile utilizzare "*.*"
invece di "*.java"
per tutti i tipi di file