gpt4 book ai didi

AWK:以相反顺序打印随机文件的内容

转载 作者:行者123 更新时间:2023-12-05 08:56:20 25 4
gpt4 key购买 nike

假设我们有一个文件,其中每一行都有不同的字数。像这样:

Douglas Texn 98 64 44
54 88 27 37
Violet Denesik Texn 40 89 70
Blanche Hoeger
Johnathon Schultz Texn 51 41 24 96

我想以相反的顺序打印它。像这样

96 24 41 51 Texn Schultz Johnathon
...
44 64 98 Texn Douglas

我的想法是先颠倒行的顺序,再颠倒列的顺序,但是我无法实现第二部分。

实现第一部分的代码

{a[NR]=$0} END {for(i=NR;i>0;i--)print a[i]}

有什么想法吗?

最佳答案

您可以使用tac man tac , "concatenate and write files in reverse", 在 awk

之前
tac file | awk '{for(i=1; i<=NF/2; ++i){ temp=$i; $i=$(NF-i+1); $(NF-i+1)=temp }}1'

你明白了,

96 24 41 51 Texn Schultz Johnathon
Hoeger Blanche
70 89 40 Texn Denesik Violet
37 27 88 54
44 64 98 Texn Douglas

解释

temp=$i; $i=$(NF-i+1); $(NF-i+1)=temp 是交换算法,

temp := x
x := y
y := temp

编辑:只有 awk 解决方案

awk '{
for(i=1; i<=NF/2; ++i){ temp=$i; $i=$(NF-i+1); $(NF-i+1)=temp }
a[c++]=$0
}END{--c; for(;c>=0;c--){print a[c]}}' file

你明白了,

96 24 41 51 Texn Schultz Johnathon
Hoeger Blanche
70 89 40 Texn Denesik Violet
37 27 88 54
44 64 98 Texn Douglas

关于AWK:以相反顺序打印随机文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41331825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com