awk - awk 在模式匹配后打印单个下一个单词
问题描述
这个 Q 是在图案之后打印某些东西的主题的变体。
将有带有单词的输入行。有些行将匹配一个模式,其中该模式将是一个或多个由空格分隔的单词。该模式可能有一个需要遵守的前导/尾随空格。我需要在比赛之后立即打印这个词。
示例输入
The quick brown fox jumps over the lazy dog
Pattern : "brown fox "
Desired output : jumps
该模式只会在一行中出现一次。模式后面总会有一个词。会有没有图案的线条。
awk 或 sed 会很好。
干杯。
编辑 :
我没有正确地问这个问题。模式和下一个单词之间会有一个或多个空格。这打破了安德烈的提议。
% echo -e "The quick brown fox jumps over the lazy dog\n" | awk -F 'brown fox ' 'NF>1{ sub(/ .*/,"",$NF); print $NF }'
jumps
% echo -e "The quick brown fox jumps over the lazy dog\n" | awk -F 'brown fox ' 'NF>1{ sub(/ .*/,"",$NF); print $NF }'
解决方案
免责声明:此解决方案假定如果未找到模式(将有没有模式的行。)打印空行是合适的,如果这不成立,则完全忽略此答案。
我将使用AWK
以下方式,让file.txt
内容成为
The quick brown fox jumps over the lazy dog
No animals in this line
The quick brown fox jumps over the lazy dog
然后
awk 'BEGIN{FS="brown fox *"}{sub(/ .*/,"",$2);print $2}' file.txt
输出
jumps
jumps
说明:我将字段分隔符设置FS
为"brown fox "
后跟任意数量的空格。之后的内容将出现在第二列中,我从第二列中丢弃第一个空格之后的任何内容,包括所述空格,然后打印该列。如果没有匹配,第二列是空的,这些操作会导致空行。
推荐阅读
- tensorflow - GCC 链接错误,重定位被截断以适应:GPREL16 针对符号错误
- java - 在模态 JDialog 可见时访问无模态 JFrame?
- go - 从 dockerize golang 模板中的文件内容设置变量
- python - what does [0,:] mean in matplotlib.animation
- android - 如何确定为什么会发生 Android 构建错误“链接文件资源失败”?
- javascript - Nuxt 中的注入函数
- javascript - 不能在具有类验证器的父类的构造函数内使用验证
- python - 读取带有垃圾值的坏 csv 文件
- javascript - 如何通过 JavaScript 隐藏下拉菜单并在某些人选择其他下拉菜单时显示仅值 4
- python - 将 fortran 对象导入 Python