Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.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
Linux 删除文本文件中包含特定字符串的行/_Linux_Bash_Text_Sed - Fatal编程技术网

Linux 删除文本文件中包含特定字符串的行/

Linux 删除文本文件中包含特定字符串的行/,linux,bash,text,sed,Linux,Bash,Text,Sed,我有一个文本文件,日期如下:2019年8月27日 我想删除所有行,但包含2019年8月27日的行除外 如果我使用sed,那将是: sed -i '/pattern/!d' file.txt 问题是,当我有一个带有“/”的模式时,我有下一个错误: sed: -e expression #1, char 5: unknown command: `8' 避开斜线: sed -i '/27\/8\/2019/!d' file.txt 避开斜线: sed -i '/27\/8\/2019/!d' f

我有一个文本文件,日期如下:2019年8月27日 我想删除所有行,但包含2019年8月27日的行除外

如果我使用sed,那将是:

sed -i '/pattern/!d' file.txt
问题是,当我有一个带有“/”的模式时,我有下一个错误:

sed: -e expression #1, char 5: unknown command: `8'
避开斜线:

sed -i '/27\/8\/2019/!d' file.txt
避开斜线:

sed -i '/27\/8\/2019/!d' file.txt
使用
awk

awk '/27\/8\/2019/' file.txt
awk '-your code-' file.txt > tmp && mv tmp file.txt
如果日期只是一个示例,请使用此选项保留所有日期行:

awk '/[0-9]+\/[0-9]+\/[0-9]+/' file.txt
使用
awk

awk '/27\/8\/2019/' file.txt
awk '-your code-' file.txt > tmp && mv tmp file.txt
使用
awk

awk '/27\/8\/2019/' file.txt
awk '-your code-' file.txt > tmp && mv tmp file.txt
如果日期只是一个示例,请使用此选项保留所有日期行:

awk '/[0-9]+\/[0-9]+\/[0-9]+/' file.txt
使用
awk

awk '/27\/8\/2019/' file.txt
awk '-your code-' file.txt > tmp && mv tmp file.txt

可能重复注意,“可能重复”的可接受解决方案在这种情况下不起作用。使用替代分隔符可用于替换,但不匹配。转义斜杠对两者都有效,但使替换命令难以阅读。请注意,在这种情况下使用grep更容易。我必须接受我最后的评论;如@Cyrus所指出的,如果在正确的位置使用反斜杠,则可以使用替代分隔符进行模式匹配。注意,“可能重复”的可接受解决方案在这种情况下不起作用。使用替代分隔符可用于替换,但不匹配。转义斜杠对两者都有效,但使替换命令难以阅读。请注意,在这种情况下使用grep更容易。我必须接受我最后的评论;如@Cyrus所指出的,如果在正确的位置使用反斜杠,则可以使用另一个分隔符进行模式匹配。或者从
/
切换到另一个字符:
\\124; 27/8/2019 |!d
@Cyrus:我已经使用sed很多年了,但从来都不知道这个把戏。或者从
/
切换到另一个角色:
\\124; 27/8/2019 |!赛勒斯:我已经使用sed很多年了,但从来都不知道这个把戏。