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

如何移除文件中以特定后缀结尾的行并合并剩余内容为单行?

解决方案

现有文件file.txt内容如下:

projectA-app1
projectA-app2
projectA-app-mobile
projectB-app1

原本的命令是把所有应用名合并为单行,但现在需要移除所有以-mobile结尾的应用,以下是几种实用实现方式:

方法一:grep过滤后合并

先用grep排除以-mobile结尾的行,再用tr将换行符替换为空格:

apps=$(grep -vE '-mobile$' file.txt | tr -s '\n' ' ')
  • grep -v:反向匹配,保留不符合规则的行
  • -E '-mobile$':用扩展正则匹配以-mobile结尾的行
  • tr -s '\n' ' ':将换行符压缩并替换为单个空格

方法二:awk一步完成过滤与合并

用awk直接过滤目标行,并输出为空格分隔的单行(可避免末尾多余空格):

apps=$(awk '!/\-mobile$/{arr[++n]=$0} END{if(n>0){printf "%s", arr[1]; for(i=2;i<=n;i++) printf " %s", arr[i]}}' file.txt)

要是不在意末尾的空格,也可以用更简洁的写法:

apps=$(awk '!/\-mobile$/{printf "%s ", $0}' file.txt)

方法三:sed删除目标行后合并

先用sed删除以-mobile结尾的行,再进行合并:

apps=$(sed '/-mobile$/d' file.txt | tr -s '\n' ' ')

执行上述任一命令后,apps变量的值即为预期结果:

projectA-app1 projectA-app2 projectB-app1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:49:52