Script bash per prendere la stessa linea da 2 differenti file

0

Domanda

Ho per esempio un file chiamato gli utenti e includono

user1
user2
user3

e file chiamato newusers tra cui:

newuser1
newuser2
newuser3

e ora ho bisogno di uno script bash per prendere user1 e newuser1 e fare qualche comando per esempio 'mv utente1 newuser1' e etc. qualcosa di simile a questo, ma questo non è lavoro per me:

user=cat users
newuser= cat newusers

for u in user ; for n in newuser; do mv $u $n done; done
bash centos linux sh
2021-11-23 07:21:43
2

Migliore risposta

2

Se è possibile nidificare le due loop, si ottiene il "numero di utenti" * "numero di newusers" le operazioni di spostamento. Ma vuoi solo "numero di utenti" le operazioni di spostamento.

Puro Bash:

#! /bin/bash

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

while true; do
  read user <&$users || exit
  read newuser <&$newusers || exit
  mv "$user" "$newuser"
done
2021-11-23 08:19:36

Funziona, che è un sacco. Si salva il mio tempo.Hanno una bella giornata.
Samir Ahmadli
1

A condizione che i file sono in ordine di corrispondenza, e lo stesso numero di linee:

tab=$(printf '\t')

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

Funziona in bash o sh. Si può costruire un comando utilizzando le righe corrispondenti. Le linee non possono già contenere le schede.

2021-11-23 08:39:51

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................