だから現在私はこのスクリプトを持っています
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