You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Bash中将换行符替换为双引号包裹空格的最简方法是什么?

问题原因说明

tr 是单字符映射替换工具,仅支持单个字符的一一对应替换,无法实现「将单个换行符替换为" "多字符字符串」的需求,因此你之前的尝试无法生效。


解决方案

方案1:sed + tr 组合(从根源避免缺引号问题)

你可以先给每行内容包裹双引号,再替换换行符为空格,完全不会出现开头缺引号的问题:

sed 's/^ *//; s/.*/"&"/' FILE.txt | tr '\n' ' '
  • 第一步sed 's/^ *//; s/.*/"&"/':先删除每行开头的空白字符,再给每行内容前后包裹双引号
  • 第二步tr '\n' ' ':将所有换行符替换为空格,最终输出即为你需要的格式

方案2:awk 一步完成

awk '{gsub(/^ */,"",$0); printf "\"%s\" ", $0}' FILE.txt

如果需要去掉末尾多余的空格,可以再加一步管道:

awk '{gsub(/^ */,"",$0); printf "\"%s\" ", $0}' FILE.txt | sed 's/ $//'

补开头双引号的单独解决方法

如果你坚持先替换换行再补引号,只需要用sed在输出开头插入双引号即可:

# 把前面的命令输出管道到下面的命令即可补开头引号
[你的原有命令输出] | sed '1s/^/"/'

内容的提问来源于stack exchange,提问作者I.P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:57:03