我需要从创建图书的MS Word文档中删除一堆索引位置。在揭示隐藏文本之后,所有索引位置的格式为{XE"其他地方" }。我有的问题是,即使它不是逐行文件,也能删除文本吗? Word文档有文本框,图表等,所以我想知道sed是否能够用任何东西替换XE术语,因此删除了特定的索引位置。
到目前为止,这是我的代码:
#!/bin/bash
echo Enter the term you wish to remove from the index:
read term
prefix="XE"
suffix="\"$term\""
newterm="$prefix $suffix"
echo $newterm
for file in $(find ./ -name "*.doc"); do
filename=${file:3}
echo $filename
sed "s/$newterm//" "$filename"
echo Success
done
谢谢!
答案 0 :(得分:1)
这是你的意思吗?
$ cat file
aslkdalsdmkaldmkaslfmdkalmkal{ XE "somethinghere" }amskldmakldmakl{ XE "otherthinghere" }alskjdkaldjakl
$ sed 's/\({ *XE *\)"[^"]*" *\(}\)/\1\2/g' file
aslkdalsdmkaldmkaslfmdkalmkal{ XE }amskldmakldmakl{ XE }alskjdkaldjakl
如您所见,{ XE }
中引用的部分已使用全局替换删除。
如果您想完全删除该部分,那就更简单了:
sed 's/{ *XE[^}]*}//g' file
删除
{
XE
}
}