有没有办法在bash脚本中使用sed从Microsoft Word文档中删除文本?

时间:2014-06-03 18:11:22

标签: bash shell sed indexing

我需要从创建图书的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

谢谢!

1 个答案:

答案 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
  • 任何数量的字符不是}
  • }