Skrypt bash do pobierania tych samych wierszy z 2 różnych plików

0

Pytanie

U mnie, na przykład, istnieje plik o nazwie użytkownicy, i zawiera on

user1
user2
user3

i plik o nazwie "nowi użytkownicy", w tym:

newuser1
newuser2
newuser3

i teraz potrzebuję skrypt bash do take user1 i newuser1 i wykonywania niektórych poleceń, np. "mv user1 dla nowego użytkownika 1" itp. coś takiego, ale to nie działa na mnie:

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

Najlepsza odpowiedź

2

Jeśli można włożyć dwa cykle, dostaniesz operacji przenoszenia "liczba użytkowników" * "liczba nowych użytkowników". Ale trzeba tylko "liczba użytkowników" dla operacji przenoszenia.

Czysty 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

To działa, niż dużo. Ty oszczędzasz swój czas.Miłego dnia.
Samir Ahmadli
1

Pod warunkiem, że pliki znajdują się w odpowiedniej kolejności i mają taką samą liczbę wierszy:

tab=$(printf '\t')

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

To działa w bash lub sh. Możesz stworzyć zespół, za pomocą odpowiednich poleceń. Wiersze nie mogą już zawierać karty.

2021-11-23 08:39:51

W innych językach

Ta strona jest w innych językach

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