将文件中的行添加到另一个文件

将文件中的行添加到另一个文件

我有两个文件。

第一个文件(users.txt):

!/bin/bash/

johnny

james

clara

brandon

steve

louis

daniel

第二个文件 ( mails.txt)

[第一行不为空,文件只包含邮件地址,无空格]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

我怎样才能将第二个文件中的邮件添加到第一个文件的任何用户名下?我认为sed需要该命令。

答案1

您可以逐行阅读这两个文件以获得所需的输出。 (我假设这些文件中没有任何其他不需要的行)

while read -r line1 && read -r line2 <&3;
do
    echo $line1
    echo $line2

done<users.txt 3<mails.txt

users.txt使用标准输入文件描述符读取0

mails.txt使用给定的文件描述符读取3

输出:

johnny
[email protected]


james
[email protected]


clara
[email protected]


brandon
[email protected]


steve
[email protected]


louis
[email protected]


daniel
[email protected]

答案2

如果您只需要一个文件,即示例中的 mails.txt,这里有一个简单的脚本。

它旨在通过向您的电子邮件指定文件来运行。./script.sh mails.txt

脚本

#!/bin/bash
filename="$1"
while read -r line
do
name=${line%@*}
echo "User: ${name} Email: ${line}"
done < "$filename"

输出

bcollins@home:~/t$ ./script.sh mails.txt 
User: johnny Email: [email protected]
User: james Email: [email protected]
User: clara Email: [email protected]
User: brandon Email: [email protected]
User: steve Email: [email protected]
User: louis Email: [email protected]
User: daniele Email: [email protected]

相关内容