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

使用while read line循环处理文件时如何正确保留转义引号?

解决方案

方案1:修正read命令参数

反斜杠丢失是read命令的默认行为导致的:默认read会将反斜杠识别为转义符进行处理,同时会自动截断首尾空白。只需要调整两个参数即可解决问题:

  • 给read添加-r参数:禁用反斜杠转义功能,保留原始的反斜杠字符
  • 前置IFS=:清空输入字段分隔符,避免read自动修剪行首行尾的空白

正确写法示例:

# 保留转义符正常输出
while IFS= read -r line; do
    echo "${line}"
done < input.txt

# 直接对接jq提取字段
while IFS= read -r line; do
    desc=$(echo "${line}" | jq '.desc' -r)
    echo "${desc}"
done < input.txt

方案2:直接用jq处理整份文件(更简洁)

你的输入属于标准的JSON Lines格式(每行一个独立JSON对象),jq原生支持直接读取处理这类文件,完全不需要写循环逐行读取,一行命令即可完成处理:

# 直接提取所有行的desc字段
jq '.desc' -r input.txt

执行后直接输出预期结果:

Necklace 18" long
Necklace 18" long

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:45:04