SDG*_*ero 17 linux bash sed cp
我写了一个脚本来清理.csv文件,删除一些坏的逗号和坏的引号(坏,意味着它们打破了我们用来转换这些文件的内部程序),使用sed:
# remove all commas, and re-insert the good commas using clean.sed
sed -f clean.sed $1 > $1.1st
# remove all quotes
sed 's/\"//g' $1.1st > $1.tmp
# add the good quotes around good commas
sed 's/\,/\"\,\"/g' $1.tmp > $1.tmp1
# add leading quotes
sed 's/^/\"/' $1.tmp1 > $1.tmp2
# add trailing quotes
sed 's/$/\"/' $1.tmp2 > $1.tmp3
# remove utf characters
sed 's/<feff>//' $1.tmp3 > $1.tmp4
# replace original file with new stripped version and delete .tmp files
cp -rf $1.tmp4 quotes_$1
Run Code Online (Sandbox Code Playgroud)
这里是clean.sed:
s/\",\"/XXX/g;
:a
s/,//g
ta
s/XXX/\",\"/g;
Run Code Online (Sandbox Code Playgroud)
然后它删除临时文件和中提琴我们有一个新的文件,以"引号"开头,我们可以用于其他进程.
我的问题是:
为什么我必须创建一个sed语句来删除该临时文件中的feff标记?原始文件没有它,但它总是出现在替换文件中.起初我认为cp导致这个但是如果我在cp之前插入sed语句删除它就不存在了.
也许我只是遗漏了一些东西......