カンマ区切りのファイルが2つあります。
ファイル1から1行を読みましょう。
間にカンマを含むfile2で一致する行を見つける必要があります。
文字通り行を入力して(マウスでコピーして貼り付けるなど)、これを行うと必要なものが得られます。
その行を変数に割り当てると、何も得られません。
混乱しています。正規表現のマッチングに関する限り、私は何かが間違っていることを知っていますが、何ですか?
例は次のとおりです。
$ pattern=$(head -1 accts.csv)
$ echo $pattern
_ccc_net_pfx,_ccc_net_pfx_export
$ grep "$pattern" all.csv
$ grep "_ccc_net_pfx,_ccc_net_pfx_export" all.csv
MyDomain\user1,User-1,Administrator,_ccc_net_pfx,_ccc_net_pfx_export,owner,Application,,
MyDomain\user2,User-2,User,_ccc_net_pfx,_ccc_net_pfx_export,readonly,Application,,
答え1
変数$pattern
にスペースが含まれています。または、Windowsシステムからインポートした場合は、^M
最後に//がある可能性があります。CR
\r
accts.csv
echo $pattern
(grep呼び出しのように)変数が引用されていないため、スペースは表示されないため、IFSメカニズムによってきちんと分割され、切り捨てられます。同様のことを試してくださいecho "{$pattern}"
。
あなたは自分自身を整理する必要があります:
$ pattern=$(sed 's/[ \r]//g;q' accts.csv)