Ich habe ein Bash-Skript, das alle Nicht-ASCII-Zeichen aus der Datei entfernt. Aber ich wollte die Zeichenfolge nach dem Nicht-ASCII-Zeichen in allen Spalten entfernen. Unten ist das Skript:
> #!/bin/bash
SCRIPT_PATH=/trmout/TRMOUTPUT_PROD
BKP_PATH=/appinfprd/bi/infogix/Temp_Files/SUPPLY_CHAIN
File_Name=WB
########################################################################
##Deleting the precessed files ####
########################################################################
cd $BKP_PATH
rm *.*
#########################################################################
### removing the non ascii char from all Supply chain files #######
#########################################################################
for i in $SCRIPT_PATH/$File_Name*.txt
do
cp $i $BKP_PATH
##########################################################################
##Replacing the NON ASCII Char from Supply Chain files and saving it.####
##########################################################################
cat $i >> $i.bkp
sed -i 's/[\d128-\d255]//g' $i.bkp
mv $i.bkp $i
done
#############################################################################################
##Creating a sample file which will be having the file name which has NON ASCII Char in it.##
#############################################################################################
cd $SCRIPT_PATH
grep -vlP '^[\0-\x7f]*$' WB*.txt >Supply_chain_Non_Ascii_List_File.txt
~
~
Antwort1
Meinen Sie, dass Sie in der Zeile nach dem ersten Nicht-ASCII-Zeichen etwas löschen möchten? Wenn nicht, geben Sie bitte einige Beispiele an.
Wenn ja, sollte Ihr sed sein:
sed -i 's/[\d128-\d255].*$//' $i.bkp
Dadurch werden das erste Nicht-ASCII-Zeichen UND der Rest der Zeile durch nichts ersetzt.