使用 AWK 解析命名参数值

     2023-03-24     176

关键词:

【中文标题】使用 AWK 解析命名参数值【英文标题】:Parsing named parameter values using AWK 【发布时间】:2019-04-05 22:46:31 【问题描述】:

我正在尝试提出一个脚本/别名,它可以快速为我提供应用程序运行的进程列表。应用程序用于启动进程的参数是命名参数,而不是位置

我需要提取-u-s-svn

的参数值
$ ps -ef | grep pmdtm | grep -v grep

infa_adm 24581 31146  0 Oct24 ?        00:09:28 pmdtm -PR -gmh dhvifoapp03 
-gmp 6015 -guid ddcbd7ab-2ed0-4696-aea3-01573968b1bc -rst 300 
-s Address_Validator:wf_AddressValidator.s_m_AddressValidatorS 
-dn Session task instance [s_m_AddressValidatorS] -c pmserver.cfg 
-run 68_4262_654212_4_0_0_0_3263_77_2_2018_10_24___13_32_47_182 
-u Administrator -uns Native -crd rlVuBI4mUFi1V/7/jyrD6f9dMurwD9Yxddio6KDy/
zwlzM5rRDMeV766VoSBqb3Snjlvu849sTXlWpJ8WjzPomNOF4U87H7x5oy
JKbtxVg/vjR6gPwWwVSdEHvPjlpwSKPcuDx6glCbB1ksrvKCAzRsW1BTlP
GOfQbnd1ptnkO83iY14k4LUpJlx8+upBhwSxk9a0TPD44byO+/4Qhe7Mg== 
-svn Int01_dev -dmn Domain_dev 
-nma https://DHVIFOAPP03.RENTERS-CHOICE-INC.COM:6005 
-nmc w/Yt3IIMbmBQf+NnN1CAKmq5ab01nxZTJEA/YCf96Pb5zT9K9VFBO4+Nvqt
FuF8gzvqf/qHbw2tcXk4DnNP4m5vJvuEhxe9vQCN8pmpJytiZKV9Np7rBbapVzra
9TEOQVm9webRg8JZB70MQryVjQlGkJDpRs9cdOCXAu1aFhNE6LNF+
c5qhLdOz/vWCI3I2 -sid 3 
-hhn dhvifoapp04.renters-choice-inc.com -hpn 15555 
-hto 60 -rac 0 -SSL 
-rsn RAC_dev ServiceResilienceTimeout=300

我可以使用以下命令为单个字段提取它,但是如何获取多个值?

$ echo "正在运行的作业列表 ==> "; ps -ef | grep pmdtm | grep -v grep | awk -F"-s " "print \$2"|awk -F" " ""print \$1"

List of running jobs ==>
Address_Validator:wf_AddressValidator.s_m_AddressValidatorS

期望的输出 =

List of running jobs ==>
Address_Validator:wf_AddressValidator.s_m_AddressValidatorS | Administrator | Int01_dev

【问题讨论】:

【参考方案1】:

您可以在grep 中执行多个“OR”表达式,如下所示:

grep -E "^-s|^-u|^-svn" < file.txt

上面只会打印出以-s-u 或 -svn 开头的行。基于此,以下命令完全符合您的要求:

echo "List of running jobs ==> "  $(ps -ef | grep pmdtm | grep -v grep | grep -E "^-s|^-u|^-svn" | awk ' print $2 " |" ')

使用上述命令在帖子上运行您的内容时,我得到以下输出:

List of running jobs ==>  Address_Validator:wf_AddressValidator.s_m_AddressValidatorS | Administrator | Int01_dev |

最后你会得到一个尾随 |,但你可以单独修剪它。

更新:

在您在下面发表评论后,更新命令以完全满足您的需要。

echo -e "List of running jobs ==> \n "  $(ps -ef | grep pmdtm | grep -v grep | awk 'BEGIN  RS = " -" $1 ~ /^s$|^u$|^svn$/  print $2,"|"')

它确实假设了几件事:

所有命名参数都将具有非空命名参数。否则,它只会输出一个空白。 所有命名参数都以- 开头,紧随其后的是参数本身。

【讨论】:

mJuarez - 感谢您的回复。我玩弄了你的建议,但它没有给我我正在寻找的输出。请注意,我在原始帖子中给出的示例都在一行中;不是多行。为了便于阅读,我可能已将问题分多行发布。 如果这是“ps -ef”的输出:pmdtpm -s abc:def.ghi -u mjuarez -svn int01_dev 我想要输出:abc:def.ghi |姆华雷斯 | int01_dev 在同一管道中,您永远只需要一个 awkgrepsedcut 实例...另外,grep-ing 通过输出ps 也很讨厌——使用 pgrep @TBT100 添加到我的答案中,因此该命令完全符合您的需要。 @mjuarez - 您更新的解决方案有效;但是,awk 命令的结果出现在一行中。我尝试在打印命令中添加换行符,但这似乎不起作用。有什么想法/建议吗?

NHibernate - 如何使用参数值记录命名参数化查询?

】NHibernate-如何使用参数值记录命名参数化查询?【英文标题】:NHibernate-HowtologNamedParameterisedQuerywithparametervalues?【发布时间】:2019-06-0811:28:47【问题描述】:我有一个这样的参数化命名查询:QuerymoveOutQuery=session.createSQLQuery(moveOu... 查看详情

awk从入门到入土(20)awk解析命令行参数(代码片段)

shell脚本提供了getopt函数可以解析命令行参数,awk自然也不例外。需要@include“getopt”,表示将该getopt.awk文件include进来,这个文件是gawk提供的。victory@victory-ThinkPad-T490:/usr/local/share/awk$ls-altotal120drwxr-xr-x2rootroot40967月2417:18.drwxr-x 查看详情

使用命名参数减小值不会改变所述值

】使用命名参数减小值不会改变所述值【英文标题】:Decreasingavaluewithanamedparameterdoesn\'tchangesaidvalue【发布时间】:2014-06-0116:06:55【问题描述】:我想减少我在Access数据库中的urunadedi值。我有以下代码:cmd2.Connection=con;cmd2.Parameters... 查看详情

awk从入门到入土(20)awk解析命令行参数(代码片段)

shell脚本提供了getopt函数可以解析命令行参数,awk自然也不例外。需要@include“getopt”,表示将该getopt.awk文件include进来,这个文件是gawk提供的。victory@victory-ThinkPad-T490:/usr/local/share/awk$ls-altotal120drwxr-xr-x2rootroot40967月2417:18.drwxr-xr-x1... 查看详情

groovy中具有默认值的命名参数

...时间】:2013-08-0220:13:49【问题描述】:是否可以在groovy中使用具有默认值的命名参数?我的计划是创建一种对象工厂,可以在没有参数的情况下调用它以获得具有默认值的对象。此外,我需要为对象显式设置任何参数的功能。例... 查看详情

你如何用 awk 解析逗号分隔值(csv)?

】你如何用awk解析逗号分隔值(csv)?【英文标题】:howdoyouparsecomma-separated-values(csv)withawk?【发布时间】:2010-11-2913:31:48【问题描述】:我正在尝试编写一个awk脚本来将CSV格式的电子表格转换为XML以解决Bugzilla错误。输入CSV的格... 查看详情

使用 UNIX 批量重命名文件 - 我应该使用 awk 吗?

】使用UNIX批量重命名文件-我应该使用awk吗?【英文标题】:BatchrenamingfilesusingUNIX-shouldIuseawk?【发布时间】:2011-03-2822:00:22【问题描述】:我有大量图像文件需要从命令行重命名。我认为最好的方法是使用awk(如果不正确,请更... 查看详情

如何将数组的值作为第二个参数传递给 awk 的 split 函数?

...我想知道是否有按值传递的方法?我正在尝试在for循环中使用内置拆分函数,并且需要从另一个数组中获取第二个参数(数组名称)并稍后引 查看详情

命名这个 python/ruby 语言结构(使用数组值来满足函数参数)

】命名这个python/ruby语言结构(使用数组值来满足函数参数)【英文标题】:Namethispython/rubylanguageconstruct(usingarrayvaluestosatisfyfunctionparameters)【发布时间】:2010-11-1114:34:38【问题描述】:这种语言结构叫什么?在Python中我可以说:d... 查看详情

命名这个 python/ruby 语言结构(使用数组值来满足函数参数)

】命名这个python/ruby语言结构(使用数组值来满足函数参数)【英文标题】:Namethispython/rubylanguageconstruct(usingarrayvaluestosatisfyfunctionparameters)【发布时间】:2010-11-1114:34:38【问题描述】:这种语言结构叫什么?在Python中我可以说:d... 查看详情

使用 awk 解析

】使用awk解析【英文标题】:parsingusingawk【发布时间】:2012-12-2412:12:33【问题描述】:如何使用awk根据来自另一个文件的数据解析一个文件。我做了一个脚本:BEGINFS="\\t";OFS="\\t"while((getline<"headfpkm")>0)++aid[a]=$1fpkm[a]=$2printid[a],... 查看详情

使用awk和sed重命名批处理文件

Leaveoffthefinalpipeto/bin/shtodoa'dryrun'lsfoo*.jpg|awk'print("mv"$1""$1)'|sed's/foo/bar/2'|/bin/sh 查看详情

使用子解析器时,命令行参数被默认值覆盖

】使用子解析器时,命令行参数被默认值覆盖【英文标题】:Command-lineargumentoverwrittenbydefaultvaluewhenusingsubparser【发布时间】:2019-09-0906:31:40【问题描述】:我有一个带有子命令的程序,但它们都有共同的参数(例如,它们都需要... 查看详情

从 xml 中提取值,它具有命名空间并解析 xml cdata

...【发布时间】:2021-05-1808:53:48【问题描述】:我正在尝试使用以下oracleSQL查询从xml中提取值,但它正在重新调整空数据。我不确定我的查询出了什么问题,但它适用于常规xml(没有名称空间和CDATA)。如果xml中有CDATA和命名空 查看详情

使用 awk 解析日志条目

】使用awk解析日志条目【英文标题】:Parsinglogentriesusingawk【发布时间】:2013-11-2621:14:03【问题描述】:我得到以下日志:2013-10-2418:35:49,728ERROR[xx.xx.xx.xx.xx.xx](xx.xx.xx.xx.xx)ManilaOlongapoLeyteTaclobanhasupdatedtheirsubscriberdetails.But,theRegiona 查看详情

AWK、SED、REGEX 重命名文件

...发布时间】:2014-02-1700:50:00【问题描述】:我只是在学习使用REGEX、AWK和SED。我目前有一组要重命名的文件-它们都位于一个目录中。命名模式是一致的,但我想重新排列文件名,格式如下:01._HORRIBLE_HISTORIES_S2.mp402._HORRIBLE_HISTORIES... 查看详情

python入门-5函数:06参数类型-位置参数-默认值参数-命名参数-可变参数-强制命名参数(代码片段)

...o;默认值参数”。默认值参数放到位置参数后面。  命名参数:    我们也可以按照形参的名称传递参数,称为“命名参数&rd 查看详情

c#4.0中的更改——命名参数和可选参数(代码片段)

...因为我们可以只传递某些参数来设置默认值。以下是一个使用命名参数的示例:voidPrintPerson(stringfirstName,stringlastName,intage)Console.WriteLine($"Name:firstNamelastName,Age:age");//使用命名参数调用PrintPerson函数PrintPerson(lastName:"Smith",firstName:"John"... 查看详情