首页 > 解决方案 > 如何使用 awk 将目录添加到变量中的文件列表中?

问题描述

#!/bin/bash
FILES='a.txt
b.txt
c.txt'
OUT_FILES=$(awk -F ' ' \$0=\"foo/bar/\"\$0 <(echo ${FILES}))

echo ${OUT_FILES}

在上面的脚本中,我期望${OUT_FILES}as 中的文件列表foo/bar/a.txt foo/bar/b.txt foo/bar/c.txt,但输出是foo/bar/a.txt b.txt c.txt. 稍后,该${OUT_FILES}列表提供给另一个命令,带有xargs. 导致仅将路径添加到列表第一个元素的 awk 表达式有什么问题?

标签: bashawk

解决方案


引号不见了,这样也会更干净。

$ awk '{print "foo/bar/" $0}' <<< "$FILES"
foo/bar/a.txt
foo/bar/b.txt
foo/bar/c.txt

也许更容易sed

$ sed 's_^_foo/bar/_' <<< "$FILES"
foo/bar/a.txt
foo/bar/b.txt
foo/bar/c.txt

推荐阅读