awk 无法将行与变量 ($PWD) 连接起来

awk 无法将行与变量 ($PWD) 连接起来

我有一个包含目录列表的文件:

$ cat dirs.txt
/some/path
/other/path
/some/another/one

当前目录是/home/loom

$ echo $PWD
/home/loom

我想添加$PWD到每一行,dirs.txt如下所示:

/home/loom/some/path
/home/loom/other/path
/home/loom/some/another/one

我尝试命令失败:

$ cat dirs.txt | awk '{print $PWD$1}'
/some/path/some/path
/other/path/other/path
/some/another/one/some/another/one

它只是每行翻倍。什么命令可以解决我的问题?


我的意思是参数答案,而不是cat dirs.txt | awk '{print "/home/loom" $1}'

答案1

PWD是一个 shell 变量,因此不会在 awk 使用的单引号内展开。

awk -v pwd="$PWD" '{print pwd$1}' dirs.txt

这会将pwd awk变量设置为 shell 变量的值PWD,然后打印每行的第 1 列,dirs.txt并将该值添加到开头。

使用 GNU awk,您可以使用该-i inplace选项用输出覆盖您的文件,否则您必须将其重定向到新文件,并在需要时用该文件覆盖旧文件。

答案2

当然还有更多方法可以做到这一点,所以既然您要求任何命令来解决您的问题,另一种方法可能是这样的:

while read -r line; do echo "${PWD}${line}"; done < "dirs"

相关内容