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。您可以使用相应的行构建命令。这些行不能已经包含制表符。