是否有一个程序可以像printf一样以整个文件作为输入?

我的用例如下。

文件.txt

第一个参数:%s
第二个 %s 参数,
第三个 %s

prog file.txt "one" "$(ls dir1/dir2)" "three"

导致

第一个参数:一个
第二个文件1 文件2 文件
3参数,第三个 3

我首先想到使用 sed,但是当 bash 替换被读取为这样的格式字符时,不可避免地会遇到问题sed s/%1/$VAR/g->sed s/%1/dir1/dir2/file1/g

我想我可以按行迭代并在替换之前和之后获取文本,然后插入

FIRST=$(sed "s/%s.*//" <<< $LINE)
SECND=$(sed "s/.*%s//" <<< $LINE)

echo "$FIRST $SUB $SECND"

尽管这仅限于每行一个子程序,如果存在,我更喜欢更清洁的解决方案。

回答

您可以printf将整个文件用作格式字符串:

printf "$(< file.txt)n" one two three

请注意,命令替换删除了尾随的换行符,因此n添加了一个单独的换行符;请参阅如何避免 bash 命令替换以删除换行符?详情。


以上是是否有一个程序可以像printf一样以整个文件作为输入?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>