所以我想使用shell脚本自动执行手动任务,但是我对如何解析几个命令的输出感到有点迷茫。我可以在没有问题的情况下使用其他语言,所以我只是解释我在psuedo代码中的用途,并提供我正在尝试解析的cmd输出的示例。
输出示例:
Chg 2167467 on 2012/02/13 by user1234 @ filename'recription of submission'
我需要解析的是'2167467'。所以我想要做的是拆分空格并将元素1用于另一个命令。我的下一个命令的输出如下所示:
在2012/02/13 18:10:15用户1234 @ filename更改2167463
description of submission
受影响的文件......
... // filepath / dir1 / dir2 / dir3 / filename#2298编辑
我需要解析'// filepath / dir1 / dir2 / dir3 / filename#2298'并在另一个命令中使用它。同样,我要做的是从输出中删除空白行,抓住第4行,然后拆分空格。从那里我将从分裂中获取第一个元素并在下一个命令中使用它。
如何在shell脚本中执行此操作?一些教程的例子或要点会很棒。
答案 0 :(得分:1)
不清楚是否要使用第一个命令的结果来处理第二个命令。如果是这样,那么
targString=$( cmd1 | awk '{print $2}')
command2 | sed -n "/${targString}/{n;n;n;s@.*[/][/]@//@;p;}"
您的示例数据中包含2个不同的Chg值(2167467,2166763),因此如果您只想以两种不同的方式处理此输出,则更简单
cmd1 | awk '{print $2}'
cmd2 | sed -n '/Change/{n;n;n;s@.*[/][/]@//@;p;}'
我希望这会有所帮助。
答案 1 :(得分:0)
我不是100%明确你的问题,但我会使用awk。
答案 2 :(得分:0)
你的第一个变量看起来像这样
temp="Chg 2167467 on 2012/02/13 by user1234@filename 'description of submission'"
要获得您想要的数字,请执行以下操作:
temp=`echo $temp | cut -f2 -d" "`
将第二个命令的输出保存到类似
的文件中command $temp > file.txt
要从文件中获取所需内容,您可以运行此命令:
temp=`tail -1 file.txt | cut -f2 -d" "`
rm file.txt
最后一段代码获取文件的最后一个非白色行,并在第二组空格上划界