尝试将参数从shell脚本传递给awk

时间:2013-12-27 21:30:15

标签: awk

我正在尝试将一个参数传递给名为HandleError.sh的脚本:

#!/bin/ksh
s=$1
echo $s
awk -v search=$s '$0 ~ /search/ { vart = NR }{ arr[NR]=$0 } END { for (i = vart; 
i<=NR ;  i++)     
print arr[i]  }' W_ERP_CLINICAL_LOAD.out > ENCOUNTER_DETAIL_ERROR.txt

我这样称呼它:

HandleError.sh BEGIN EMR_LAB_FAC  

我正在尝试将文件W_ERP_CLINICAL_LOAD.out从第一次出现的BEGIN EMR_LAB_FAC复制到文件的底部。除了传递参数外,一切都运行良好。

我可以像这样硬编码并且工作正常。

awk '$0 ~ /BEGIN ENCOUNTER_DETAIL/ { vart = NR }{ arr[NR]=$0 } END { for (i = vart; i<=NR ;  
i++) print arr[i]  }' W_ERP_CLINICAL_LOAD.out > ENCOUNTER_DETAIL_ERROR.txt

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

this answer相似......

$0 ~ /search/替换为$0 ~ search

答案 1 :(得分:1)

你想要这个:

awk -v search="$s" '$0 ~ search {f=1} f' W_ERP_CLINICAL_LOAD.out

不需要数组。如果找不到搜索模式,您所使用的方法也会复制文件的全部内容。