我有一个包含目录列表的文件:
$ 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}'
发布于 2019-08-15 18:58:51
PWD是一个shell变量,因此不会在awk使用的单引号中展开。
awk -v pwd="$PWD" '{print pwd$1}' dirs.txt这将将pwd awk变量设置为PWD shell变量的值,然后打印dirs.txt中每一行的第1列,并将该值加到开头。
使用GNU,您可以使用-i inplace选项用输出覆盖您的文件,否则您将不得不将其重定向到一个新文件,并根据需要覆盖旧文件。
发布于 2019-08-15 19:11:09
当然,有更多的方法可以做到这一点,因此,既然您需要任何解决问题的命令,那么另一种方法可能是:
while read -r line; do echo "${PWD}${line}"; done < "dirs"https://unix.stackexchange.com/questions/535783
复制相似问题