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

如何通过Linux命令移除引号与HEX分隔符间的换行符?

移除引号内换行符的Linux命令推荐

需求说明

需要移除HEX分隔符与引号之间、且位于引号包裹的data2内容里的换行符,将引号内的多行文本合并为单行。

示例输入

data1 HEX "This data2 should be
in the same
line" HEX data3

期望输出

data1 HEX "This data2 should be in the same line" HEX data3

推荐解决方案

方案1:使用sed命令

这是处理这类跨行文本替换的常用工具,命令如下:

sed -e ':a' -e '/"$/!{N;ba' -e '}' -e 's/\n/ /g' input.txt

命令逻辑:

  • :a 定义循环标签a
  • /"/$!{N;ba} 若当前行未以引号结尾,就读取下一行追加到当前行,然后跳回标签a继续循环,直到捕获到完整的引号块
  • s/\n/ /g 将捕获到的多行引号块里的换行符全部替换为空格

如果需要直接修改原文件,添加-i参数即可:

sed -i -e ':a' -e '/"$/!{N;ba' -e '}' -e 's/\n/ /g' input.txt

方案2:使用awk命令

awk通过标记切换来识别引号块,实现换行替换:

awk '/"/{flag=!flag} flag{gsub(/\n/," "); printf "%s", $0; next} 1' input.txt

命令逻辑:

  • /"/{flag=!flag} 遇到引号时,切换flag的状态(进入或退出引号区域)
  • flag{gsub(/\n/," "); printf "%s", $0; next} 处于引号区域内时,将换行符替换为空格,用printf避免自动换行,持续输出合并后的内容
  • 1 非引号区域的行直接正常输出

内容的提问来源于stack exchange,提问作者JIAHAO

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:52:38