使用awk命令获取行
当使用awk命令获取行,awk,Awk,当n为正数时,下面的命令用于获取模式匹配后的第n行 但是,当我将n作为负数时,同样的命令不适用于获取模式匹配前的第n行。你能帮忙吗 awk /pattern_to_match/{x = NR + n}NR == x file_to_search 谢谢, BSD类似的东西可能会有所帮助 tac file_to_search | awk '/pattern_to_match/{x = NR + n}NR == x' 或 示例: $ seq 10 1 2 3 4 5 6 7 8 9 10 $ s
n
为正数时,下面的命令用于获取模式匹配后的第n行
但是,当我将n
作为负数时,同样的命令不适用于获取模式匹配前的第n行。你能帮忙吗
awk /pattern_to_match/{x = NR + n}NR == x file_to_search
谢谢,
BSD类似的东西可能会有所帮助
tac file_to_search | awk '/pattern_to_match/{x = NR + n}NR == x'
或
示例:
$ seq 10
1
2
3
4
5
6
7
8
9
10
$ seq 10 | tac | awk '/^7/{x = NR + 3}NR == x'
4
$ seq 10 | awk '{arr[FNR]=$0} /^7/{x=FNR-3;if(x in arr){ print arr[x]; exit}}'
4
像这样的东西可能会有帮助
tac file_to_search | awk '/pattern_to_match/{x = NR + n}NR == x'
或
示例:
$ seq 10
1
2
3
4
5
6
7
8
9
10
$ seq 10 | tac | awk '/^7/{x = NR + 3}NR == x'
4
$ seq 10 | awk '{arr[FNR]=$0} /^7/{x=FNR-3;if(x in arr){ print arr[x]; exit}}'
4
将N
替换为所需匹配前的第N行数字
例如:
文件“a”包含:
hello
there
how
are
you?
运行grep-b2“是”a | head-1
返回那里
可能的问题:如果匹配之前没有N
行,将返回文件的第一行
将N
替换为所需匹配前的第N行数字
例如:
文件“a”包含:
hello
there
how
are
you?
运行grep-b2“是”a | head-1
返回那里
可能的问题:如果在匹配之前没有
N行,文件的第一行将被返回。在下面的命令中==>awk'{arr[FNR]=$0}/^7/{x=FNR-3;如果(x In arr){print arr[x];exit}==>我在哪里提供文件名?@BSDawk'{arr[FNR]=$0}/^7/{x=FNR-3;如果(x In arr){print arr[x];exit}}下面命令中的'your_file
==>awk'{arr[FNR]=$0}/^7/{x=FNR-3;if(x In-arr){print arr[x];exit}==>我在哪里提供文件名?@BSDawk'{arr[FNR]=$0}/^7/{x=FNR-3;if(x In-arr){print arr[x];exit}}你的文件