首页 > Sysadmin > 正文

Linux 一行文本不换行:4 种常用方法

huyuanwen 2026-11-03 Sysadmin

在 Linux 终端和脚本里,经常需要让文本保持单行、不折行,无论是查看日志、处理数据,还是控制终端显示格式。

终端查看时不折行

用 less 查看长文本时,默认会在屏幕宽度处自动折行。加 -S 参数可以让长行直接截断,右侧内容通过左右方向键查看,不会折成多行 [1]。

less -S longlog.txt

进入 less 后按 - 再按 S 也可以临时切换。

合并多行为单行

如果要把文件里多个换行合并成一行,最直接的是 tr -d '\n',它删除所有换行符 [2]。

# 把 file.txt 所有行拼成一行
tr -d '\n' < file.txt

# 合并后在末尾补一个换行,避免 shell 提示符粘在同一行
tr -d '\n' < file.txt; echo

sed 也能做,适合需要保留特定换行的场景 [3]。

# 只保留空行作为段落分隔
sed '/^$/!{H;d;};x;s/\n/ /g' file.txt

按宽度截断,保留单行

需要限制每行最大字符数时,用 cut -c1-80 截取前 80 个字符,超出部分直接丢弃 [4]。

cut -c1-80 longline.txt

如果要在指定宽度处折行,用 fold -w 80 [5]。

fold -w 80 file.txt

fmt 可以重排段落,适合处理 prose 文本 [6]。

fmt -w 80 file.txt

awk 控制输出换行

awk 通过修改 ORS(输出记录分隔符)可以完全控制换行行为 [7]。

# 所有输出用空格分隔,不再自动换行
awk -v ORS=' ' '{print}' file.txt

# 只在空行处换行
awk 'NF{printf "%s ", $0; next} {print ""}' file.txt

排错速查

现象 原因 处理
tr -d '\n' 后 shell 提示符粘在一行 输出末尾没有换行 命令后补 ; echo
less -S 看不到右侧内容 长行被截断 按右方向键或 ESC-\ 跳到行尾
fold 在单词中间断开 缺少 -s 参数 改用 fold -s -w 80
cut 输出乱码 文件含多字节字符 改用 fold -b 或 cut -b 按字节截断

草稿待审;less、fold、sed、awk、tr、cut 命令均已 WSL Ubuntu 24.04 实测通过。


参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。