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

如何在Bash中提取txt文件内‘picture’后的所有单词并保存

问题描述

我有一个users_sl.txt文件,其中单词picture多次出现,想要提取每个picture之后紧跟的第一个单词,并保存到picturelist.txt文件中。

我尝试了以下代码,但无法正常运行:

cat users_sl.txt |awk -F: '/^login:"/{print $2}' cookies.txt

users_sl.txt的内容如下:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis picture lobortis scelerisque fermentum dui faucibus in ornare quam. Est ullamcorper eget nulla facilisi etiam dignissim diam quis. Quis viverra nibh cras pulvinar mattis nunc sed. Turpis massa sed elementum  picture tempus egestas. Condimentum vitae sapien pellentesque habitant. Et molestie ac feugiat sed lectus vestibulum mattis ullamcorper. Tincidunt lobortis feugiat vivamus at augue eget arcu  picture dictum varius. Donec massa sapien faucibus et molestie ac feugiat sed. Tincidunt eget nullam non nisi est. Ornare arcu dui vivamus arcu. Mattis enim ut tellus elementum sagittis vitae et leo duis

期望生成的picturelist.txt内容:

lobortis
tempus
dictum
解决方案

你之前的命令逻辑完全混乱,既关联了不相关的cookies.txt,又错误设置了分隔符和匹配规则,肯定跑不通。下面给你几个可行的解决方法:

方法1:用awk处理

awk适合遍历文本中的单词,精准提取目标内容,命令如下:

awk '{for(i=1;i<=NF;i++) if($i=="picture") print $(i+1)}' users_sl.txt > picturelist.txt
  • 逻辑:遍历每行的每个单词,当遇到picture时,直接打印它的下一个单词,最后把结果写入目标文件。

方法2:用sed正则提取

sed通过正则匹配捕获目标内容,命令如下:

sed -n 's/.*picture \([a-zA-Z]*\).*/\1/p' users_sl.txt > picturelist.txt
  • 逻辑:只匹配包含picture的行,捕获它后面的第一个纯字母单词,然后只输出捕获到的内容,写入目标文件。

方法3:用grep结合Perl正则

如果你的grep支持-P参数(Perl正则),可以用更简洁的写法:

grep -oP 'picture \K\w+' users_sl.txt > picturelist.txt
  • 逻辑:匹配picture 但不包含这部分在结果里,只输出后面的单词字符,最后写入目标文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:25:15