如何从awk中的文件中获取最后10个值
我有一个包含以下数据的文件:如何从awk中的文件中获取最后10个值,awk,sed,Awk,Sed,我有一个包含以下数据的文件: 345 234 232 454 343 676 887 324 342 355 657 786 343 879 088 342 121 345 534 657 767 我需要剪切最后10个值并将其放入另一个文件: 786 343 879 388 342 121 345 534 657 767 无需使用awk,只需跟踪数据即可: tail -n 10 input.txt > example.txt 如果您真的想使用awk,您必须跟踪最后10行($0),并在
345
234
232
454
343
676
887
324
342
355
657
786
343
879
088
342
121
345
534
657
767
我需要剪切最后10个值并将其放入另一个文件:
786
343
879
388
342
121
345
534
657
767
无需使用awk,只需跟踪数据即可:
tail -n 10 input.txt > example.txt
如果您真的想使用awk,您必须跟踪最后10行(
$0
),并在END
中打印它们。虽然这样做会有点过分。这就是tail
命令的作用:
$ tail -10 file
786
343
879
088
342
121
345
534
657
767
要将输出存储在新文件中,请使用重定向操作符:
$ tail -10 file > new_file
$ awk '{a[NR]=$0}END{for(i=(NR-9);i<=NR;i++)print a[i]}' file > new_file
但是,如果您确实想使用awk
执行此操作,则蛮力方法是将每一行存储在一个数组中,并在文件末尾打印最后10个元素:
$ awk '{a[NR]=$0}END{for(i=(NR-9);i<=NR;i++)print a[i]}' file
786
343
879
088
342
121
345
534
657
767
GNU代码:
- 获取最后10行
sed”:a$q;N11美元,D;ba'文件
- 除了最后10行之外,其他的都要
sed”:a$d;N2,10ba;PD'文件
10
,我们可以避免声明-n10
,因为这是tail的默认行为。@JS웃 (加上其他4名投票人)我不是建议了适合这项工作的工具,并回答了问题吗?@sudo_O我想是的。虽然我觉得整个awk
部分其实并不必要。@JS웃 问题是如何使用awk
。awk
零件怎么可能是不必要的!?POSIX要求将tail-n10
置于传统的tail-10
IIRC之上。可能是这样,但我不记得曾经使用过需要它的tail
。我想加入-n
就是认为@Matthias Vallentin价值+5的原因,尽管他实际上并没有回答这个问题。+1是为了回答问题并提供更好的选择。有时我想知道人们是如何投票给第二个最好的答案而忽略了最好的答案的。
$ awk '{a[NR%10]=$0}END{for(i=NR%10+1;j++<10;i=++i%10) print a[i]}' file
786
343
879
088
342
121
345
534
657
767
$ awk '{a[NR%n]=$0}END{for(i=NR%n+1;j++<n;i=++i%n) print a[i]}' n=3 file
534
657
767