簡體   English   中英

通過在Linux中配對值將2個文件的內容復制到一個新文件中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM