gpt4 book ai didi

linux - 如何在 UNIX 中使用 awk 以不同方式(通过 argc 中的文件名位置)打印来自多个文件的文本?

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:59 26 4
gpt4 key购买 nike

这是我必须做的:显示作为参数给出的文件的内容,如下所示:位置 1, 3, 5, ... 上的文件将正常显示。这位置 2, 4, 6, ... 上的文件打印每一行颠倒顺序(最后一个字最先显示,倒数第二个显示第二等)。

我尝试了很多方法,但我不知道如何验证文件名在 awk 参数列表中的位置。

if(j%2!=0){
for(i=1;i<=NF;i++)
print $i
}
else
for(i=NF;i=1;i--)
print $i
}

这就是我如何打印文件中的行。

BEGIN{
for(j=1;j<ARGC;j++)
a[j]=j
}

在这里,我尝试制作一个包含参数数量的列表。

但是我怎样才能将列表与 if 一起使用呢?或者我怎样才能以不同的方式做到这一点?

$ awk -f 2.awk 1.txt 2.txt 3.txt

这是我使用的命令,其中2.awk是源文件。

文本文件示例: 1.txt

1 2 3 4

a b c b

最佳答案

对于 ARGIND 使用 GNU awk:

gawk '!(ARGIND%2){for (i=NF;i>1;i--) printf "%s ",$i; print $1; next} 1' file1 file2 ...

对于其他 awk,只需在 FNR==1 block 中递增一个变量来创建您自己的“ARGIND”,假设所有文件都不为空。

关于linux - 如何在 UNIX 中使用 awk 以不同方式(通过 argc 中的文件名位置)打印来自多个文件的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16088098/

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