Linuxでgrepの正規表現を利用中に引数$1を渡す方法についてご教授下さい
いつもお世話になっています。
現在、Linuxで動作するシェルスクリプトを作成しております。
当シェルスクリプトですが、タブを含むtsvテキストファイルに含まれるキーワードに対してgrepの正規表現で抽出したいと考えております。
その際にキーワードはシェルに引数で渡したいと考えております。
grepの正規表現内に引数「$1」を利用したいのですが、正規表現の行末を表す「$」と認識されており正しく機能しておりません。
シェルスクリプトの内容を以下に掲載しますので、
どなたか詳しい方、ご教授いただけますでしょうか。よろしくお願いします。
発生している問題
grep でキーワードを抽出したいが引数「$1」の「$」部分が正規表現の行末を表す「$」と同じようで正しく抽出されておりません
該当のソースコード
以下、作ったシェルスクリプトです
(説明のため簡略化してあります)
タブ区切りで4つの単語が並んでおり、2つ目の単語のキーワード(数字)を引数で渡したいと考えております。
実行パターン1 sh test.sh
実行パターン2 sh test.sh キーワード(数字)
test.sh 引数 $1 パターン1(引数なしでキーワードを直接入力) cat test.tsv | grep $'^[^\t]*\t[キーワード]*\t[^\t]*\t[^\t]*' パターン2(引数で渡す) cat test.tsv | grep $'^[^\t]*\t[$1]*\t[^\t]*\t[^\t]*'
試したこと
上記のパターン1ですと、直接入力しているので抽出可能です。
上記のパターン2ですと「$」部分が末尾として認識されているようで抽出が出来ておりません。
実現したいこと
上記パターン2の引数を渡す形で実現したいのですが私の技術力が乏しく、引数の適切な渡し方が分かっておりません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/15 07:08