1

我有一个这种格式的文件:

字 1 :“字 2”字 3

我想删除“Word2”

那么文件必须是这样的:

字 1 : 字 3

我怎么能用 sed 做到这一点?

注意:Word2 是可变的

4

5 回答 5

1

如果 input_file 中没有多余的内容,只需将每个引用的短语替换为空字符串:

sed 's/"[^"]*"//' input_file
于 2012-07-18T08:38:12.443 回答
0

如果 file.txt 是您的文件,您可以从命令行尝试:

sed -e "s_: \"[a-zA-Z0-9]*\" _: _g" -i file.txt
于 2012-07-18T08:55:01.407 回答
0

基于给定的输入。比如说,Word2 可以是任何东西,但 Word1 和 Word3 是固定的。sed/awk oneliner 可以完成这项工作 4 u:

kent$  echo 'Word1 : "Word2" Word3'|sed -r 's/(Word1 :) "[^"]*"( Word3)/\1\2/g' 
Word1 : Word3


kent$  echo 'Word1 : "Word2" Word3'|awk -F"\"" '{print $1,$3}' 
Word1 :   Word3
于 2012-07-18T08:58:46.123 回答
0

从命令行尝试

$ sed -i 's/\"Word2\"//g' /path/to/file.txt
于 2012-07-18T08:42:48.517 回答
0

如果 test 是您的文件,请尝试:

# cat test | sed -r 's/\".+\"\ //'
于 2012-07-18T08:51:29.340 回答