文字列と数字を含むCSVファイル(temp.csvなど)があります。行の先頭に特定の文字列パターンを含むファイルの行を削除する必要があります。たとえば、これは私のファイルです。
req1,incl_patt1,excl_patt1,2,ind1
req1,incl_patt2,excl_patt2,1,ind1
req1,incl_patt3,excl_patt3,4,ind1
req2,inc_patt1,exc_patt1,1,ind2
req2,inc_patt2,exc_patt2,2,ind2
req2,inc_patt3,exc_patt3,3,ind2
req3,pattern3,expatt3,1,ind3
req4,pattern4,expatt4,1,ind4
req_file_curr
コマンドにパターンを作成しています。~ $ req_file_curr=req1
echo "${req_file_curr}"
次のように出力を提供します。req1
しかしsed
以下のようにコマンドを実行します。
sed '/\"${req_file_curr}\"/d' temp.csv
次のように出力を提供します。
req1,incl_patt1,excl_patt1,2,ind1
req1,incl_patt2,excl_patt2,1,ind1
req1,incl_patt3,excl_patt3,4,ind1
req2,inc_patt1,exc_patt1,1,ind2
req2,inc_patt2,exc_patt2,2,ind2
req2,inc_patt3,exc_patt3,3,ind2
req3,pattern3,expatt3,1,ind3
req4,pattern4,expatt4,1,ind4
出力になると予想します。
req2,inc_patt1,exc_patt1,1,ind2
req2,inc_patt2,exc_patt2,2,ind2
req2,inc_patt3,exc_patt3,3,ind2
req3,pattern3,expatt3,1,ind3
req4,pattern4,expatt4,1,ind4
シェルの変数をパターンとして使用する方法sed
またはawk
?
ベストアンサー1
sed
シェルが変数を渡す前に変数を拡張できるように、パターンを二重引用符で囲む必要がありますsed
。
sed "/^${req_file}/d" temp.csv
また、このパターンが線の先頭に表示されることを^
示すためにアンカーポイントを使用する必要があります。sed