1

我在 file.txt 上使用 awk 运行以下命令,目前它从上到下在 file.txt 中存在的 id 上运行命令。我希望命令以与文件中存在的 id 相反的顺序运行。 txt..关于我们如何做到这一点的任何输入?

git command $(awk '{print $1}' file.txt)

file.txt contains.

97a65fd1d1b3b8055edef75e060738fed8b31d3 
fb8df67ceff40b4fc078ced31110d7a42e407f16
 a0631ce8a9a10391ac4dc377cd79d1adf1f3f3e2 

.....
4

2 回答 2

1

如果您没有一定要使用awkthentail-r(for reverse) 参数将做的伎俩......

我的文件.txt

97a65fd1d1b3b8055edef75e060738fed8b31d3 
fb8df67ceff40b4fc078ced31110d7a42e407f16
a0631ce8a9a10391ac4dc377cd79d1adf1f3f3e2

现在反向打印...

$ tail -r myFile.txt

a0631ce8a9a10391ac4dc377cd79d1adf1f3f3e2
fb8df67ceff40b4fc078ced31110d7a42e407f16
97a65fd1d1b3b8055edef75e060738fed8b31d3 

编辑:要将其输出到文件只需将其重定向...

$ tail -r myFile.txt > newFile.txt

编辑:想要写入同一个文件?没问题!

tail -r myFile.txt > temp.txt; cat temp.txt > myFile.txt; rm temp.txt;

出于某种原因,当我重定向tail -r到相同的文件时,它返回空白,此解决方法通过写入临时“缓冲区”文件来避免该问题。

于 2013-04-30T19:39:32.563 回答
1

要使用 awk 反转文件中的行,请使用

awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' file

使用$1而不是$0上面仅对第一个字段而不是整行进行操作。

于 2013-04-30T19:33:45.563 回答