Command line 使用sed删除指定字符之间的单词
我有一个文件是这种格式的: 单词1:“单词2”单词3 我想删除“Word2” 那么文件必须如下所示: 单词1:单词3 我怎样才能用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'
注意: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实现都接受)。不过,我认为在这里使用*
可能更好,因为带引号的字符串可能是空的。