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

在Linux/Bash环境下如何将//<换行>替换为空字符?

解决Linux/Bash中将//<换行>替换为空字符的问题

你的原命令问题在于:sed默认按行处理输入,每行的换行符不会被包含在处理的内容中,所以你只替换了行尾的//为null字符,但原来的换行符依然保留。

以下是几种可行的解决方案:

方案1:使用带-z选项的sed

利用sed的-z选项将输入输出的行分隔符设为null,这样可以将整个输入作为一个整体处理,匹配//加上换行符的组合并替换为null:

stat --format="%s %W %Y %X %Z %n//" * | sed -z 's/\/\/\n/\x0/g'

方案2:改用stat的--printf选项+awk

stat的--format会自动在格式字符串结尾添加换行符,改用--printf可以避免这个行为,再用awk替换//为null字符:

stat --printf="%s %W %Y %X %Z %n//" * | awk '{gsub(/\/\//, "\x0"); printf "%s", $0}'

方案3:使用tr结合awk(适合简单场景)

先通过tr去掉换行符,再用awk替换//为null:

stat --format="%s %W %Y %X %Z %n//" * | tr -d '\n' | awk '{gsub(/\/\//, "\x0"); printf "%s", $0}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:15:49