スクリプトがあります
#! /bin/bash
awk -v pat="$1" '{ if(match($0, pat)) {print $0} }' "$3"
awk -v pat="$1" -v rep="$2" '{gsub(pat, rep); print $0}' "$3"
このように運営したい
myscript '\.\.+' ' ' ./inputfile
(GNU awk)が理解できる正規表現でなければ$1
なりません。awk
pat
正規表現で指定されたパラメータにはgsub()
効果match()
がありません。操作する方法を知りたいです。ありがとうございます。
ベストアンサー1
変数を渡す限り、あなたのやり方は正しいです。式が機能するには、次のものが必要です。二重バックスラッシュ、少なくともガウクでは:
myscript '\\.\\.+' ' ' ./inputfile
AWK部分を簡素化できます。
#!/bin/bash
awk -v pat="$1" 'match($0, pat)' "$3"
awk -v pat="$1" -v rep="$2" '{gsub(pat, rep)} 1' "$3"