【发布时间】:2021-05-23 00:22:32
【问题描述】:
我的用例如下。
文件.txt
第一个参数:%s
第二个 %s 参数,
第三个 %s
运行prog file.txt "one" "$(ls dir1/dir2)" "three"
导致
第一个参数:一个
第二个文件 1 文件 2 文件 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"
虽然这仅限于每行一个子,但如果存在,我更喜欢更清洁的解决方案。
【问题讨论】:
标签: linux bash shell sed printf