Linux下如何提取txt文件每行第一个和第二个下划线之间的文本
解决方法
方法1:直接处理转换后的outputfile.txt(awk方案,最简便)
awk天然适合按分隔符提取字段,直接指定下划线为分隔符,提取第二个字段即可:
awk -F '_' '{print $2}' outputfile.txt > result.txt
参数说明:
-F '_'指定字段分隔符为下划线$2指代每行被下划线分割后的第二个字段,正好是第一个和第二个下划线之间的目标文本- 输出的
result.txt就是你要的预期结果。
方法2:sed实现方案
如果你想用sed完成,可以用正则捕获组提取目标内容:
sed 's/^[^_]*_\([^_]*\)_.*/\1/' outputfile.txt > result.txt
正则逻辑:
匹配行开头到第一个下划线的所有内容,再捕获第一个到第二个下划线之间的内容,最后丢弃第二个下划线之后的所有内容,只输出捕获的目标片段。
优化方案:一步处理原始文件(无需先生成outputfile.txt)
可以把「替换第一个横杠为下划线」和「提取目标字段」两步合并,直接处理原始inputfile.txt:
awk -F '[-_]' '{print $2}' inputfile.txt > result.txt
这里直接把分隔符设为横杠-或下划线_,原始行第一个分隔符是横杠,分割后的第二个字段就是你要的目标文本,省去了提前替换的步骤。
内容的提问来源于stack exchange,提问作者MagíBC
相关产品推荐
相关产品推荐

