假设我有一个具有此结构的文件
1001.txt
1002.txt
1003.txt
1004.txt
1005.txt
2001.txt
2002.txt
2003.txt
...
现在我如何删除以' 2'开头的前10行数?可能有超过10行以' 2'。
开头我知道我可以使用grep '^2' file | wc -l
查找以' 2'开头的行数。但是如何删除前10行的数字?
答案 0 :(得分:2)
您可以通过此Perl one-liner管道列表:
perl -p -e '$_="" if (/^2/ and $i++ >= 10)'
答案 1 :(得分:0)
awk替代方案:
awk '{ if (substr($0,1,1)=="2") { count++ } if ( count > 10 || substr($0,1,1)!="2") { print $0 } }' filename
如果该行的第一个字符为2,则递增计数器。然后,如果count大于10或第一个字符不是2,则仅打印该行。
答案 2 :(得分:0)
awk中的另一个人。使用值2进行测试,因为您的数据只有3行相关数据。用10替换后者2.
$ awk '/^2/ && ++c<=2 {next} 1' file
1001.txt
1002.txt
1003.txt
1004.txt
1005.txt
2003.txt
.
.
.
说明:
$ awk '/^2/ && ++c<=2 { # if it starts with a 2 and counter still got iterations left
next # skip to the next record
} 1 # (else) output
' file