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

Linux下移除固定长度文件中无前导空格的CRLF(求TR/SED/AWK方案)

问题需求

Linux文件系统中有一个固定长度的输出文件,需要移除其中所有前导无空格的CRLF:文件里有效行的CRLF前都包含多个空格,而需要移除的CRLF前没有空格。此前尝试了多种tr、sed、awk命令均未解决,现寻求可行方案。

已尝试的命令

echo -n $(tr -d "?<-c\x20\r\n" < file) > output.txt
echo -n $(tr -d "?<\x20\r\n" < file) > output.txt;

(tr -d "\r\n" < file.txt | fold -w 2538;echo) | sed 's/$/\r/' > output.txt

awk 'length($0) != 2536 {sub(/\r$/,""); printf "%s", $0; next} {print}' file.txt > output.txt

可行解决方案

方案1:使用awk处理

通过判断行尾字符是否为空格,决定是否保留CRLF:若行尾非空格则移除CRLF并拼接下一行,若为空格则保留原行格式。

awk '{
    line = $0
    # 移除行尾的\r统一处理
    sub(/\r$/, "", line)
    if (substr(line, length(line), 1) != " ") {
        # 无空格结尾,不输出换行,拼接下一行内容
        printf "%s", line
    } else {
        # 有效行,保留原CRLF格式
        print line "\r"
    }
}' file.txt > output.txt

方案2:使用sed多行处理

利用sed的多行模式,匹配行尾非空格且带\r的行,将其与下一行合并:

-N '
    # 匹配行尾为非空格且带\r的行
    /[^ ]\r$/{
        N
        # 移除两行之间的CRLF分隔符
        s/\r\n//
    }
    p
' file.txt > output.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:23:13