linux - 如何检索位于bash中模式之后的字符串
问题描述
我有一个大文件。我想检索恰好在此字符串之后的单词:“PatterStr()”。
两个示例行:
PatterStr().123232424 hhhhh 9999. test, test32312
66666666698977. PatterStr().8888
输出应该是:
123232424
8888
当我使用 grep 时,将打印整行当在一行中找到两个模式时,都应该打印,例如:
PatterStr().123232424 hhhhh 9999. test, test32312. PatterStr().11111111
66666666698977. PatterStr().8888
正确的结果:
123232424
11111111
8888
解决方案
请您尝试以下操作。
awk '
{
while(match($0,/PatterStr\(\)\.[0-9]+/)){
value=substr($0,RSTART,RLENGTH)
sub(/.*\./,"",value)
print value
$0=substr($0,RSTART+RLENGTH)
value=""
}
}' Input_file
输出如下。
123232424
11111111
8888
上述代码解释:为上述代码添加详细级别的解释。
awk ' ##Starting awk program from here.
{
while(match($0,/PatterStr\(\)\.[0-9]+/)){ ##Starting while loop which has match function to match regex of PatterStr(). till all digits here.
value=substr($0,RSTART,RLENGTH) ##Creating variable value which has sub-string value of current line, startin point RSTART tioll RLENGTH.
sub(/.*\./,"",value) ##Substituting everything till DOT with NULL in variable value here.
print value ##Printing variable value here.
$0=substr($0,RSTART+RLENGTH) ##Setting rest of sub-string value starting from RSTART+RLENGTH to last of line of current line here.
value="" ##Nullify variable value here.
}
}' Input_file ##Mentioning Input_file name here.
推荐阅读
- bixby - 是否可以在输入视图中显示布局?
- java - java - 如何使用Selenium Webdriver和Java单击同一行中的旁边/上一个表格单元格(TD)?
- android - 如何在没有 Play 商店的情况下自动更新 android 应用程序?
- scala - Spark 数据框异常
- android - 如何管理刷卡次数?
- c++ - 如何将指向“DEFINED”常量的指针传递给 C 中的函数?
- python - 我正在尝试使用 pyautogui 通过 Python 自动化 GUI 应用程序,但是当我使用“locateCenterOnScreen”时,它的 gettig 错误?
- css - bootstrap 4 css 在卡片右下角显示包含文本的黄色三角形,是 css 的方式吗?
- python-3.x - 如何将文件保存到目录并将这些文件附加到 Python 中的列表中?
- c - while ( *(mychar++)) 什么时候停止