2010-07-22 45 views
0

我有下面的示例文件SED + AWK +核实线在文件

/etc/sysconfig/network/script.sh = -exe $Builder 
    run_installation 123 44 556 4 = run_installation arg1 arg2 arg3 948 
    EXE=somthing 
    EXE somthing 

我有三个问题(我写bash脚本)

  1. 如何通过awk或者sed如果字符串验证在“=”字符后面存在“-exe”
  2. 如何通过sed或awk验证字符串run_installation是否存在于行的第一行(行中的第一个字符)和“=”字符后面,如下例所示(文件)

  3. 在文件中的字符串EXE可以是 “EXE” 或 “EXE =”,如何通过sed的EXE或EXE删除=

    我做的:

    sed s'/EXE//g' | sed s'/EXE=//g' 
    

    ,但它不是好方法在我的bash脚本中做

•我需要三个不同的答案!

利迪娅

回答

0

你不给上,如果条件1和2都没有发现什么做进一步的标准......

awk '/=.*-exe/{f=1;} 
/^run_installation.*=.*run_installation/{g=1} 
/^EXE/{ gsub(/EXE=|EXE/,"") } 
f && g{ print "ok" ;exit } 
' file 

上面的代码检查条件1和条件2和打印“确定“,当两个都找到。为了说明的目的,添加EXE代替条件3。国家更清楚你想在下一次做,并显示您的预期输出

要单独验证他们什么,

awk '/= -exe/{print "found"}' file 
awk '/^run_installation.*=.*run_installation/{print "found"}' file 
+0

对不起它应该有三个答案,不是一个答案 – lidia 2010-07-22 07:17:38

+0

所有的情况下你能请编辑再为不同三个答案 – lidia 2010-07-22 07:19:40

+0

3回答?我不明白。所有的条件都可以通过一个awk过程完成。通过示例输入和输出样本来定义和清楚地说明你想要做什么。 – ghostdog74 2010-07-22 07:25:47