如何在第 n 个平面文件列上执行 bash 命令并将其打印出来以输出?

如何在第 n 个平面文件列上执行 bash 命令并将其打印出来以输出?

我只需要在第二列执行 basename cmd

[ora@rac TEST]$ cat test.log | awk '{print $1 " " $2}'
9780c69e13e3dda64c3c6ddce2b37803 /test/test_202007140422_01.zip
73b635c2e852e215a342cba53a323b80 /test/test_202007140422_02.zip
c194efd0fc6381c2a5a92913dae572d6 /test/test_202007140422_03.zip

我需要这样的东西:

9780c69e13e3dda64c3c6ddce2b37803 test_202007140422_01.zip
73b635c2e852e215a342cba53a323b80 test_202007140422_02.zip
c194efd0fc6381c2a5a92913dae572d6 test_202007140422_03.zip

我更喜欢 awk,但如果它简单有效,您也可以使用 diff 工具;)提前致谢。

答案1

使用空格或斜线作为字段分隔符,并打印第一个和最后一个字段:

awk -F '[[:blank:]/]' '{print $1, $NF}' file

答案2

我用的是这个:

while IFS=" " read -r f c; do echo $f $(basename $c); done < test.log

而且它对我有用;)如果您有更好的想法 - 请在下面发布;)

相关内容