Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line 使用sed删除指定字符之间的单词_Command Line_Sed - Fatal编程技术网

Command line 使用sed删除指定字符之间的单词

Command line 使用sed删除指定字符之间的单词,command-line,sed,Command Line,Sed,我有一个文件是这种格式的: 单词1:“单词2”单词3 我想删除“Word2” 那么文件必须如下所示: 单词1:单词3 我怎样才能用sed做到这一点 注意:Word2是可更改的如果输入文件中没有额外内容,只需用空字符串替换每个带引号的短语即可: sed 's/"[^"]*"//' input_file 如果输入_文件中没有多余的内容,只需将每个带引号的短语替换为空字符串: sed 's/"[^"]*"//' input_file 从命令行重试 $ sed -i 's/\"Word2\"//g'

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

单词1:“单词2”单词3

我想删除“Word2”

那么文件必须如下所示:

单词1:单词3

我怎样才能用sed做到这一点


注意:Word2是可更改的

如果输入文件中没有额外内容,只需用空字符串替换每个带引号的短语即可:

sed 's/"[^"]*"//' input_file

如果输入_文件中没有多余的内容,只需将每个带引号的短语替换为空字符串:

sed 's/"[^"]*"//' input_file

从命令行重试

$ sed -i 's/\"Word2\"//g' /path/to/file.txt

从命令行重试

$ sed -i 's/\"Word2\"//g' /path/to/file.txt

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

# cat test | sed -r 's/\".+\"\ //'

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

# cat test | sed -r 's/\".+\"\ //'

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

sed -e "s_: \"[a-zA-Z0-9]*\" _: _g" -i file.txt

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

sed -e "s_: \"[a-zA-Z0-9]*\" _: _g" -i file.txt

基于给定的输入。比如说,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

基于给定的输入。比如说,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

如果我有非拉丁字符?:)如果我有非拉丁字符,可以使用以下命令试试:
sed-e“s:\”[^\“]*\”\ug“-i file.txt
):)如果我有非拉丁字符,可以使用以下命令试试:
sed-e“s:\”[^\”]*\“\ug“-i file.txt
)+1,但是:严格地说,sed应该使用基本正则表达式,所以\+应该无效(但被许多sed实现所接受)。不过,我认为在这里使用
*
可能更好,因为带引号的字符串可能是空的。+1,但是:严格来说,sed应该使用基本正则表达式,所以\+应该无效(但许多sed实现都接受)。不过,我认为在这里使用
*
可能更好,因为带引号的字符串可能是空的。