如果文件不包含指定的字符串,如何删除文件的第一行?

How to delete first line of a file if it does not contain a specified string?

我有这样的文件:

username
Total 0
username
Total 0
username
Total 0
username
Total 0
username
Total 0

但有些格式不正确,第一行不正确,如下所示:

Total 0
username
Total 0
username
Total 0
username
Total 0
username
Total 0

我需要一个单行,如果第一行不包含 username

,它将删除第一行

我用 sed 试过了,但它不起作用:

sed -e '1!b' -e '/username/!d'
perl -ne 'print if 1 != $. || /username/'

使用 awk 更容易做到这一点:

awk 'NR == 1 && [=10=] != "username" {next} 1' file
$ awk 'NR>1 || /username/' file
username
Total 0
username
Total 0
username
Total 0
username
Total 0