Shell 从文本文件中提取第1行、第11行、第21行等

Shell 从文本文件中提取第1行、第11行、第21行等,shell,Shell,是否可以使用Linux命令从文本文件的第1、11、21、31行检索数据 我需要对2、12、22、32等进行同样的操作。您可以使用awk来执行此操作: awk '(NR % 10 == 1){ print }' your_input_file 例如: $ seq 1 100|awk '(NR%10 == 2){print}' 2 12 22 32 42 52 62 72 82 92 如前所述,您可以参数化awk脚本,使其更易于使用。如果print是默认操作,您只需编写: $ seq 1 2

是否可以使用Linux命令从文本文件的第1、11、21、31行检索数据


我需要对2、12、22、32等进行同样的操作。

您可以使用
awk
来执行此操作:

awk '(NR % 10 == 1){ print }' your_input_file
例如:

 $ seq 1 100|awk '(NR%10 == 2){print}'
2
12
22
32
42
52
62
72
82
92
如前所述,您可以参数化
awk
脚本,使其更易于使用。如果
print
是默认操作,您只需编写:

 $ seq 1 20|awk -v step=10 -v idx=3 'NR%step==idx'
3
13

稍微搜索一下会给你一个解决方案:“稍微搜索一下”解决方案是针对线的离散范围,这与这里提出的问题不同。没有一个解决方案能解决这个问题。@Leffler你在开玩笑吗?第1行、第11行、第21行和第31行的答案是否也应该重写,因为思考4秒或打字是痛苦的?@dystroy:我同意乔纳森的观点。该问题的答案中显示了如何选择文件中的每N行?(我不是说以前没有人问过这个问题——可能有,但你链接到的问题没有回答这个问题。)+1。要参数化:
awk-vskip=10-vwanted=1'NR%skip==wanted'
谢谢,通常这确实更有用。把它吊到柱子上。