【问题标题】:bash script for take same lines from 2 different file用于从 2 个不同文件中获取相同行的 bash 脚本
【发布时间】:2022-01-01 16:56:50
【问题描述】:

例如,我有一个名为 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

【问题讨论】:

  • user=cat users 运行一个名为 users 的程序并将环境变量 user 设置为字符串 cat。请一次只关注一个问题(例如如何为变量赋值?)。另外,请明确您是想以数组还是标量来组织用户名。

标签: linux bash shell centos sh


【解决方案1】:

如果你嵌套两个循环,你会得到“用户数”*“新用户数”移动操作。但您只需要“用户数”移动操作。

纯猛击:

#! /bin/bash

exec {users}<users
exec {newusers}<newusers

while true; do
  read user <&$users || exit
  read newuser <&$newusers || exit
  mv "$user" "$newuser"
done

【讨论】:

  • 它有效,比你好多了。你节省了我的时间。祝你有美好的一天。
【解决方案2】:

只要文件顺序匹配,行数相同:

tab=$(printf '\t')

paste users newusers |
while IFS=$tab read user newuser; do
    echo "move $newuser $user"
done

它适用于 bash 或 sh。您可以使用相应的行构建命令。这些行不能已经包含制表符。

【讨论】:

    猜你喜欢
    • 2019-11-30
    • 2011-05-04
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多