我正在尝试在UTF-16文件steamui_english.txt
上执行文本替换我希望只替换该行的第二个实例
"Steam_Root_Title" "Steam"
替换值
"Steam_Root_Title" ""
(请注意,这些列是以制表符分隔的。)
编辑:这是一个bash脚本,我在OS X上,而不是它会改变很多...... 我已经尝试了太多的解决方案来列出它们!
答案 0 :(得分:2)
您可以使用sed,但希望在处理过程中转换为UTF-8:
iconv -f UTF-16 -t UTF-8 input.txt \
| sed '0,/"Steam_Root_Title"/! {0,/"Steam_Root_Title"/ s/"Steam"/""/}' \
| iconv -f UTF-8 -t UTF-16 \
>output.txt
如果您想在纯粹的bash中执行此操作,可以尝试以下内容:
count=0
while read; do
if [[ $REPLY = '"Steam_Root_Title"'* ]] ; then
(( count++ ))
if (( count == 2 )) ; then
printf '"Steam_Root_Title"\t""\n'
else
echo "$REPLY"
fi
else
echo "$REPLY"
fi
done < <(iconv -f UTF-16 -t UTF-8 in.txt) | iconv -f UTF-8 -t UTF-16 >out.txt