Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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
Bash 删除多行上两个字符串之间的文本_Bash_Sed_Lines - Fatal编程技术网

Bash 删除多行上两个字符串之间的文本

Bash 删除多行上两个字符串之间的文本,bash,sed,lines,Bash,Sed,Lines,我有一个日志文件,它在不同的行上生成时间戳和命令日志。我想去掉时间戳,只保存“user:command”列表。我尝试了几种sed置换来替换或删除字符串之间的数据,但它总是超出命令的范围。当前日志输出类似于: USER 001 6:32am USER 001 random bash command or output 001 USER 002 7:41am USER 002 random bash command or output 002 USER 001 7:43am USER 001 ran

我有一个日志文件,它在不同的行上生成时间戳和命令日志。我想去掉时间戳,只保存“user:command”列表。我尝试了几种sed置换来替换或删除字符串之间的数据,但它总是超出命令的范围。当前日志输出类似于:

USER 001
6:32am
USER 001
random bash command or output 001
USER 002
7:41am
USER 002
random bash command or output 002
USER 001
7:43am
USER 001
random bash command or output 003
USER 002
7:43am
USER 002
random bash command or output 004
期望输出:

USER 001
random bash command or output 001
USER 002
random bash command or output 002
USER 001
random bash command or output 003
USER 002
random bash command or output 004

看起来这样可以:

sed -ri 'N; /^.*\n[0-9]/d'
(假设使用GNU。)

它一次处理两行文件。
在每个周期:

  • sed自动将一行读入模式空间
  • N命令将换行符和下一行追加到模式空间
  • 如果模式空间与“任意文本、换行符、数字”匹配,则删除 它(因此不自动打印)
  • 否则,自动打印它

如果文件始终采用相同的格式,您可以这样删除该行:

awk 'NR%4!=1 && NR%4!=2' file
USER 001
random bash command or output 001
USER 002
random bash command or output 002
USER 001
random bash command or output 003
USER 002
random bash command or output 004
awk '!(NR%4==1 || NR%4==2)' file
或者您可以这样使用它:

awk 'NR%4!=1 && NR%4!=2' file
USER 001
random bash command or output 001
USER 002
random bash command or output 002
USER 001
random bash command or output 003
USER 002
random bash command or output 004
awk '!(NR%4==1 || NR%4==2)' file