gawk 部分相互参照

gawk 部分相互参照

だから現在私はこのスクリプトを持っています

gawk -F: '
    FNR==NR{a[$1][$2]=1;next}
    $2 in a{for(i in a[$2]) print $1 FS i}
' email.phone.txt name.email.txt

電子メール。電話コンテンツの例:

[email protected]:012345
[email protected]:912345

name.email.txt 例:

Charles:[email protected]
Erica:[email protected]

これは出力されます

Charles:012345
Charles:912345
Erica:012345
Erica:912345

ご覧のとおり、現在2つのファイルを調べて、email.phone.txt最初の列を2番目の列とname.email.txt一致させます。一致すると、name.email.txt最初のemail.phone.txt列と2番目の列が出力され、:区切り文字として使用されます。

文字列の一部を一致させるにはどうすればよいですか?

このように、

電子メール。電話コンテンツの例:

[email protected]:012345

name.email.txt 例:

Charles:Email@gm

ここで予想される出力は次のとおりです。

Charles:012345
Charles:912345

答え1

1つの解決策は読書です。Eメールその後、正規表現が一致します。電話番号即時:

$ cat email.txt
Charles:Charles@gm
Erica:[email protected]

$ cat tele.txt
[email protected]:012345
[email protected]:912345
$ awk -F ':' 'NR==FNR{ em[$1]=$2 } NR!=FNR{ for(i in em){
                if( $1 ~ em[i] ){ print i":"$2 } } }' email.txt tele.txt
Charles:012345
Erica:912345

関連情報