Bash 从文本文件中删除,UTF 8
我使用这个BASH脚本将文本从一个文本文件过滤到另一个文本文件。文本以UTF8编码Bash 从文本文件中删除,UTF 8,bash,utf-8,Bash,Utf 8,我使用这个BASH脚本将文本从一个文本文件过滤到另一个文本文件。文本以UTF8编码 #!/bin/bash mid=$1 infile="/var/www/tmp/textgrid_uploads/${mid}.txt" outfile="/home/var/www/vids/$mid/${mid}_textgrid.mlf" tmpfile="/home/var/www/vids/$mid/${mid}.tmp" i=1 touch $tmpfile cat $infile | grep
#!/bin/bash
mid=$1
infile="/var/www/tmp/textgrid_uploads/${mid}.txt"
outfile="/home/var/www/vids/$mid/${mid}_textgrid.mlf"
tmpfile="/home/var/www/vids/$mid/${mid}.tmp"
i=1
touch $tmpfile
cat $infile | grep "text =" | cut -d '"' -f2 | tr -d ',' | tr -d '.' | tr -d ':' | tr -d ';' | tr -d '!' | tr -d '?' > $tmpfile
#| awk '{ print tolower($0) }'
#cat $infile | grep -v "<" | egrep -v '^[[:space:]]*$' | tr -d '.' | tr -d "," | tr -d ";" | tr -d ":" | tr -d "^" | tr -d '#' | tr -d '?' | tr -d '!' | tr -d '%' | tr -d '@' | tr -d '*' | tr -d '~' | grep -v '((xxxxx))' | awk '{ print tolower($0) }' > $tmpfile
#cat $infile | grep -v 'WEBVTT' | grep -v "\--" | grep -v '^$' | sed 's/?/./g' | sed 's/!/./g' | tr -d '.' | tr -d "," | tr -d ";" | tr -d ":" | awk '{ print tolower($0) }' > $tmpfile
nlines=$(cat $tmpfile | wc -l)
echo "#!MLF!#" >> $outfile
echo "\"*/dummyfile.lab\"" >> $outfile
while [ $i -le $nlines ]
do
line=$(cat $tmpfile | sed $i'q;d') #zobrazi konkretny riadok
printf '%s\n' $line | sed '/^\s*$/d' | cut -d "/" -f1 | egrep -v '^[[:space:]]*$' >> $outfile #zapis po riadkoch s odstranenim znaciek
i=$[$i+1] #pocitadlo
done
echo "." >> $outfile
rm $tmpfile
此脚本的输出为:
#!MLF!#
"*/dummyfile.lab"
<feff> V utorok o devätnástej bude vo fejs
我想删除带有两个括号的第一个单词feff。请给我一个完整的例子如何做。我是Bash新手,我只是使用这个脚本,而不是创建它。谢谢各位 我假设您不能仅仅更改创建输入文件的内容,而不首先写入BOM?如果它实际上是BOM,那么它将位于文件的第一个位置偏移零。dd if=input\U file of=output\U file skip=3将过滤掉它。@wildplasser您能给我举一个使用它的示例吗?我试过了/bin/bash dd if=infle of=outfile skip=3但不起作用。