繁体   English   中英

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM