bash 用于从 2 个不同文件中获取相同行的脚本
bash script for take same lines from 2 different file
例如,我有一个名为 users 的文件,它包含
user1
user2
user3
和名为 newusers 的文件包括:
newuser1
newuser2
newuser3
现在我需要 bash 脚本来获取 user1 和 newuser1 并执行一些命令,例如 'mv user1 to newuser1' 等。
类似这样的东西,但这对我不起作用:
user=cat users
newuser= cat newusers
for u in user ; for n in newuser; do mv $u $n done; done
如果嵌套两个循环,您将获得“用户数”*“新用户数”移动操作。但是您只需要“用户数”移动操作。
纯Bash:
#! /bin/bash
exec {users}<users
exec {newusers}<newusers
while true; do
read user <&$users || exit
read newuser <&$newusers || exit
mv "$user" "$newuser"
done
前提是文件顺序匹配且行数相同:
tab=$(printf '\t')
paste users newusers |
while IFS=$tab read user newuser; do
echo "move $newuser $user"
done
它适用于 bash 或 sh
。您可以使用相应的行构建命令。这些行不能已经包含制表符。
例如,我有一个名为 users 的文件,它包含
user1
user2
user3
和名为 newusers 的文件包括:
newuser1
newuser2
newuser3
现在我需要 bash 脚本来获取 user1 和 newuser1 并执行一些命令,例如 'mv user1 to newuser1' 等。 类似这样的东西,但这对我不起作用:
user=cat users
newuser= cat newusers
for u in user ; for n in newuser; do mv $u $n done; done
如果嵌套两个循环,您将获得“用户数”*“新用户数”移动操作。但是您只需要“用户数”移动操作。
纯Bash:
#! /bin/bash
exec {users}<users
exec {newusers}<newusers
while true; do
read user <&$users || exit
read newuser <&$newusers || exit
mv "$user" "$newuser"
done
前提是文件顺序匹配且行数相同:
tab=$(printf '\t')
paste users newusers |
while IFS=$tab read user newuser; do
echo "move $newuser $user"
done
它适用于 bash 或 sh
。您可以使用相应的行构建命令。这些行不能已经包含制表符。