有没有办法在bash脚本中使用sed从microsoftword文档中删除文本?
我需要从创建一本书的MS Word文档中删除一堆索引位置。显示隐藏文本后,所有索引位置的格式为{XE“somethinghere”}。我的问题是sed是否能够删除文本,即使它不是逐行文件?Word文档有文本框、图表等,因此我想知道sed是否能够用零替换XE术语,从而删除特定的索引位置 以下是我目前的代码:有没有办法在bash脚本中使用sed从microsoftword文档中删除文本?,bash,shell,sed,indexing,Bash,Shell,Sed,Indexing,我需要从创建一本书的MS Word文档中删除一堆索引位置。显示隐藏文本后,所有索引位置的格式为{XE“somethinghere”}。我的问题是sed是否能够删除文本,即使它不是逐行文件?Word文档有文本框、图表等,因此我想知道sed是否能够用零替换XE术语,从而删除特定的索引位置 以下是我目前的代码: #!/bin/bash echo Enter the term you wish to remove from the index: read term prefix="XE" suffix
#!/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
谢谢 这就是你的意思吗
$ 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
- 非
}
}