【发布时间】:2012-07-17 05:55:10
【问题描述】:
我有一个这种格式的文件:
Word1 : "Word2" Word3
我想删除“Word2”
那么文件必须是这样的:
Word1 : Word3
我怎样才能用 sed 做到这一点?
注意:Word2 是可变的
【问题讨论】:
标签: command-line sed
我有一个这种格式的文件:
Word1 : "Word2" Word3
我想删除“Word2”
那么文件必须是这样的:
Word1 : Word3
我怎样才能用 sed 做到这一点?
注意:Word2 是可变的
【问题讨论】:
标签: command-line sed
如果 input_file 中没有多余的内容,只需将每个引用的短语替换为空字符串:
sed 's/"[^"]*"//' input_file
【讨论】:
* 可能会更好,因为引用的字符串可能为空。
基于给定的输入。比如说,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
【讨论】:
如果 file.txt 是你的文件,你可以从命令行试试这个:
sed -e "s_: \"[a-zA-Z0-9]*\" _: _g" -i file.txt
【讨论】:
sed -e "s_: \"[^\"]*\" _: _g" -i file.txt ;)
如果 test 是您的文件,请尝试:
# cat test | sed -r 's/\".+\"\ //'
【讨论】:
从命令行尝试
$ sed -i 's/\"Word2\"//g' /path/to/file.txt
【讨论】: