删除所有列中非 ASCII 字符之后的所有字符

删除所有列中非 ASCII 字符之后的所有字符

我有一个 bash 脚本,它将从文件中删除所有非 Ascii 字符。但我想删除所有列中非 Ascii 字符后面的字符串。下面是脚本,

> #!/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
~
~

答案1

您的意思是要删除该行中第一个非 ASCII 字符之后的任何内容吗?如果没有,请提供一些例子。

如果是,你的 sed 应该是:

sed -i 's/[\d128-\d255].*$//' $i.bkp

这将替换第一个非 ASCII 字符以及该行的其余部分。

相关内容