我有一个日志文件,可以在不同的行上生成时间戳和命令。我想删除时间戳并只保存" user:命令"名单。我已经尝试了几种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
答案 0 :(得分:1)
看起来会这样:
sed -ri 'N; /^.*\n[0-9]/d'
(假设GNU sed。)
一次处理文件两行 在每个周期:
答案 1 :(得分:1)
如果文件始终采用相同的格式,您可以删除如下所示的行:
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