我有以下文件:
public <T> PageImpl<T> runQuery(final Statement statement, final Expression expression, final String alias,
final Pageable pageable, final Class<T> tClazz) {
PageImpl<T> tPage = null;
try {
CompletableFuture<List<T>> entityFuture = CompletableFuture
.supplyAsync(() -> findByN1QLProjection(statement, tClazz)).exceptionally(th -> {
logger.write(new Exception(th.getMessage(), th));
return Collections.emptyList();
});
CompletableFuture<Long> countFuture = CompletableFuture.supplyAsync(() -> doCount(expression, alias))
.exceptionally(th -> {
logger.write(new Exception(th.getMessage(), th));
return 0L;
});
CompletableFuture.allOf(entityFuture, countFuture).get();
tPage = new PageImpl<>(entityFuture.get(), pageable, countFuture.get());
} catch (final InterruptedException | ExecutionException ex) {
logger.write(ex);
tPage = new PageImpl<>(Collections.emptyList(), pageable, 0);
}
return tPage;
}
使用first
second
third
fourth
third
fifth
sixth
我可以从第一场比赛开始打印,以获得:
cat file | sed -n '/third/,$p'
是否可以修改third
fourth
third
fifth
sixth
命令,使其基本上忽略第一个匹配并从第二个匹配打印?那将是:
sed
答案 0 :(得分:2)
这是一个awk
,它通过保持缓冲区来存储行中third
出现的所有行,并在再次找到third
时重置缓冲区来执行此操作:
awk '/third/{p=$0 RS; next} p{p=p $0 RS} END{printf "%s", p}' file
third
fifth
sixth
或者,您可以使用此tac + awk
:
tac file | awk '1; /third/{exit}' | tac
third
fifth
sixth
答案 1 :(得分:2)
使用sed:
sed '1,/third/d' file | sed -n '/third/,$p'
输出:
third fifth sixth
答案 2 :(得分:0)
使用gnu sed
sed '/third/!d;:A;N;/\nthird/!{s/[^\n]*\n//;bA };s/[^\n]*\n//;:B;N;bB' infile