Linux 如何使用awk或sed打印相邻的两行?

Linux 如何使用awk或sed打印相邻的两行?,linux,shell,scripting,Linux,Shell,Scripting,我知道我可以使用awk'NR==10'

我知道我可以使用
awk'NR==10'<1.txt
打印文本文件的第10行

如何将其格式化为:

第10行::第14行

第11行:第15行

第16行:第18行


我对awk和sed两种方式都很满意。请帮助?

您可以使用
awk
如下:

awk 'NR ~ /^1[016]$/{a[NR]=$0} NR==14||NR==15{print a[NR-4] " : " $0} 
     NR==18{print a[NR-2] " : " $0}' file

Line 10 : Line 14
Line 11 : Line 15
Line 16 : Line 18
文件的位置是:

cat file

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
Line 11
Line 12
Line 13
Line 14
Line 15
Line 16
Line 17
Line 18
Line 19
Line 20

您可以使用
awk
,如下所示:

awk 'NR ~ /^1[016]$/{a[NR]=$0} NR==14||NR==15{print a[NR-4] " : " $0} 
     NR==18{print a[NR-2] " : " $0}' file

Line 10 : Line 14
Line 11 : Line 15
Line 16 : Line 18
文件的位置是:

cat file

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
Line 11
Line 12
Line 13
Line 14
Line 15
Line 16
Line 17
Line 18
Line 19
Line 20

这不能解决我的问题。还有更多关于格式的问题。它不能解决我的问题。还有更多关于格式的问题。10、11和16背后的逻辑是什么?一个好的问题将包含一小部分示例数据、输入的预期输出、当前代码/输出/错误MSG以及您对为什么事情不起作用的想法。此外,在每行代码/数据/错误MSG的前面使用4个空格,或突出显示一块文本,并使用编辑框左上角的
{}
格式工具将其格式化为代码/数据/输出。请阅读,,,也许还有。祝你好运。@anubhava没有逻辑。实际上,问题是在他们前面打印第5、6、7、8行和第10、11、12、13行。10、11和16后面的逻辑是什么?一个好问题将包含一小部分示例数据、输入的预期输出、当前代码/输出/错误MSG以及你对为什么事情不起作用的想法。此外,在每行代码/数据/错误MSG的前面使用4个空格,或突出显示一块文本,并使用编辑框左上角的
{}
格式工具将其格式化为代码/数据/输出。请阅读,,,也许还有。祝你好运。@anubhava没有逻辑,实际上问题是在他们前面打印第5、6、7、8行和第10、11、12、13行