174140 Asked: 2019-08-02 01:14:43 +0800 CST2019-08-02 01:14:43 +0800 CST 2019-08-02 01:14:43 +0800 CST `less`:多个命令,包括搜索 772 想象一下,您想要less自动滚动到末尾。正如其手册所述,很容易做到less +G。 想象一下,您希望less从头开始,但在吸收了所有输入之后。简单,做less +Gg(到最后然后回到开始),它支持几个命令链。你不相信吗?足够多的连续Gg序列,你最终会less来回观看。 想象一下,您想要less前进到==序列的第六次出现。不能用less +/==nnnnn!即搜索==nnnnn,而不是搜索==然后再搜索下五次。现在要做什么? less valgrind 3 个回答 Voted Best Answer user1686 2019-08-02T01:26:37+08:002019-08-02T01:26:37+08:00 想象一下,您实际上可以像这样指定多个单独的命令: less +/== +nnnnn 如果这不起作用,您可以在参数中嵌入一个文字换行符: less $'+/==\nnnnnn' less "+/== nnnnn" harrymc 2020-09-25T05:03:16+08:002020-09-25T05:03:16+08:00 此方法用于awk查找字符串的行号并将其用作参数less: less +$(awk '/==/{++n; if (n==6) { print NR; exit}}' file) file 这是受 Stack Overflow 后 shell 脚本的启发,用于查找第 n 次出现的字符串并打印行号,其中提供了更多查找行号的方法。 为了便于使用,可以将此命令嵌入到 bash 函数中,并将文件、字符串和出现次数作为参数。 Hastur 2020-09-27T04:15:01+08:002020-09-27T04:15:01+08:00 简单来说 为此,我做了一个功能 Myless(){ less +g$(grep -n -m$2 "$1" "$3" | cut -f1 -d: | tail -n 1) "$3"; } 然后我打电话给 Myless == 6 myfile 要求grep找到模式,打印行号-n,在第 m 次出现后停止-m$2,切割数字cut -fd:, taking the last one tail -n 1`... 它可以优化(对于非常大的文件)搜索字节作为二进制数据然后指向less该字节...... ...或者可以sed以更紧凑的方式使用它来提取行号(sed -n '/pattern/=' myfile)...
想象一下,您实际上可以像这样指定多个单独的命令:
如果这不起作用,您可以在参数中嵌入一个文字换行符:
此方法用于
awk
查找字符串的行号并将其用作参数less
:这是受 Stack Overflow 后 shell 脚本的启发,用于查找第 n 次出现的字符串并打印行号,其中提供了更多查找行号的方法。
为了便于使用,可以将此命令嵌入到 bash 函数中,并将文件、字符串和出现次数作为参数。
简单来说
为此,我做了一个功能
然后我打电话给
要求
grep
找到模式,打印行号-n
,在第 m 次出现后停止-m$2
,切割数字cut -f
d:, taking the last one
tail -n 1`...它可以优化(对于非常大的文件)搜索字节作为二进制数据然后指向
less
该字节.........或者可以
sed
以更紧凑的方式使用它来提取行号(sed -n '/pattern/=' myfile
)...