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

如何将多行软件包列表合并为单行?Shell脚本解决方案

文本文件合并为单行的Shell解决方案

你可以用以下几种简单高效的方法实现将pkglist.txt的多行内容合并为单行命令:

方法1:使用cat+tr命令

这是最直观的方式,将换行符替换为空格:

# 先清理每行末尾的多余空格(可选)
sed -i 's/[[:space:]]*$//' pkglist.txt
# 合并所有行为单行
cat pkglist.txt | tr '\n' ' ' > temp.txt && mv temp.txt pkglist.txt

方法2:使用sed命令一次性合并

利用sed的多行处理功能,直接将所有换行符替换为空格,无需临时文件:

# 清理末尾空格(可选)
sed -i 's/[[:space:]]*$//' pkglist.txt
# 合并为单行
sed -i ':a;N;$!ba;s/\n/ /g' pkglist.txt

解释::a定义循环标签,N将下一行追加到模式空间,$!ba如果不是最后一行就跳回标签a继续循环,最后s/\n/ /g把所有换行符替换为空格。

方法3:使用paste命令

paste的-s参数可串行合并所有行,指定分隔符为空格:

# 清理末尾空格(可选)
sed -i 's/[[:space:]]*$//' pkglist.txt
# 合并为单行
paste -sd ' ' pkglist.txt > temp.txt && mv temp.txt pkglist.txt

注意事项

  • 如果pkglist.txt已经包含sudo pacman -Syu行,无需再用原脚本的sed -i '1 i\...'插入,避免重复。
  • 清理每行末尾的多余空格是可选步骤,但能避免合并后出现多个连续空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:24:08