[英]Copying content of 2 files in a new file by pairing the values in linux
應該有2個文件。 一個文件包含用戶列表,其他文件包含密碼列表。 用戶文件有5個用戶,密碼文件也有5個密碼。 我在這里要做的是創建一個新文件,並將每個用戶與密碼文件中所有可用的密碼配對。 例如:用戶1與密碼1、2、3、4、5配對。 用戶2將與密碼1,2,3,4,5配對,依此類推。
我的問題是:1.這里應該使用哪個循環? 2.我的頭說要配對,我們需要使用嵌套的for循環。 這是正確的嗎? 3.我可以以某種方式想象復制內容的第一部分,但是我無法想象如何將它們配對。 所以我需要幫助和建議。
編輯:
輸入的示例是2個名為“用戶名”和“密碼”的文件。
用戶名文件:
用戶1
用戶2
..
用戶5
密碼文件:
合格1
通行證2
..
合格5
預期輸出為:
User1-Pass1
User1-Pass2
..
User1-Pass5
User2-Pass1
User2-Pass2
..
User2-Pass5
依此類推,直到我們到達User5-Pass5
謝謝。
廣告1.,2。是,需要嵌套循環。
假設每行一個用戶和每行一個密碼,那么代碼將是:
> concat # delete file content
for usr in `cat file_with_users`
do
for pwd in `cat file_with_passwords`
do
echo "$usr-$pwd" >> result_file
done
done
如果您編寫輸入樣本和預期輸出,則可以編寫更具體的內容。
總是有更好的方法
$ join -t, -j 99 users pwords | cut -d, -f2-
例如
$ echo u{1..5} | tr ' ' '\n' > users
$ echo p{1..5} | tr ' ' '\n' > pwords
$ join -t, -j 99 users pwords | cut -d, -f2-
u1,p1
u1,p2
u1,p3
u1,p4
u1,p5
u2,p1
u2,p2
...
u5,p4
u5,p5
對-
定界符改變join -t- -j 99 users pwords | cut -d- -f2-
join -t- -j 99 users pwords | cut -d- -f2-
這是使用虛構的列(第99個)在每行之間創建聯接,這稱為叉積。 由於密鑰在輸出的第一個位置丟失,因此我們需要在末尾將其切除。
請執行以下任一幫助:
grep -Fwf file1 file2 or
awk 'NR==FNR{A[$1];next}$1 in A' file1 file2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.