如何通过Shell脚本将文本文件多行内容转为单行参数形式输出
多行“-n 内容”合并为单行的Shell实现方案
以下几种方法都可以实现将每行的“-n 内容”合并成单行输出:
方法1:利用tr替换换行符为空格
如果你的现有脚本已经能输出两行-n jon和-n match,只需将输出通过管道传递给tr命令,把换行符替换成空格即可:
# 假设现有脚本输出是两行,这里用示例模拟原输出 while read line; do echo "-n $line"; done < schemas.txt | tr '\n' ' '
如果介意末尾多余的空格,可以追加sed命令去除:
while read line; do echo "-n $line"; done < schemas.txt | tr '\n' ' ' | sed 's/ $//'
方法2:用paste命令合并行
paste的-s参数可以串行合并所有行,-d指定分隔符为空格,用法更简洁:
while read line; do echo "-n $line"; done < schemas.txt | paste -sd' '
方法3:循环内构建字符串,最后统一输出
直接在脚本中把所有内容存到变量里,最后一次性输出,避免多次echo产生换行:
result="" while read -r line; do result="$result -n $line" done < schemas.txt # 输出时去除开头的空格(可选) echo "${result# }"
这种方法更安全,尤其当schemas.txt中的行包含空格时,不会被错误拆分。
方法4:用printf直接生成单行内容
如果schemas.txt中每行都是单个单词(无空格),可以用printf直接拼接:
printf "-n %s " $(cat schemas.txt) # 同样可以去除末尾空格 printf "-n %s " $(cat schemas.txt) | sed 's/ $//'
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

