如何无需循环实现静态变量与管道输出的无空格单行拼接?
解决方案
最优单行无循环方案(基于awk修正)
你之前awk输出多余空格的原因是print语句中使用了逗号分隔变量,awk默认会在逗号位置插入输出字段分隔符(默认值为空格),直接去掉逗号做字符串拼接即可解决:
# 管道写法 cat test.file | awk -v var="$link" '{print var$0}' # 更简洁的无cat写法 awk -v var="$link" '{print var$0}' test.file
输出完全符合你需要的无空格拼接效果,不需要额外管道做补救处理。
xargs方案修复
你之前用xargs出现重复输出的原因是参数传递逻辑错误:你额外传入了空值"$1"作为printf的参数,加上xargs从管道读取的内容,printf会匹配格式串中的%s输出两次。
正确的xargs写法(用-I指定占位符,适配每行输入):
cat test.file | xargs -I {} printf "${link}%s\n" {}
更轻量的小文件适配方案
如果处理的文件内容较少,也可以直接用printf读取文件内容实现单行无循环拼接:
printf "${link}%s\n" $(<test.file)
内容的提问来源于stack exchange,提问作者Mario
相关产品推荐
相关产品推荐

