한 서버에서 다른 서버로 50대의 프린터 설정을 복사하려고 합니다. 주문하다:
lpadmin -p printer_name -v printer_ip -E
그리고 더 많은 매개변수.
하나의 텍스트 파일에 프린터 이름을 넣고 다른 텍스트 파일에 프린터 IP를 넣었습니다.
Printername.txt에는 별도의 줄에 프린터 이름이 포함되어 있습니다.
Printerip.txt에는 다른 줄에 있는 동일한 프린터의 IP가 포함되어 있습니다.
이 두 파일의 프린터 이름과 프린터 IP를 위 명령의 매개변수로 전달하고 싶습니다.
cat 파일에서 For i를 사용하여 1개의 매개변수로 수행하는 방법을 알고 있지만 두 개의 파일에서는 수행할 수 없습니다.
답변1
붙여넣기를 사용하여 각 파일에서 한 줄을 가져올 수 있습니다.
paste Printername.txt Printerip.txt
그런 다음 awk
다음을 사용하여 옵션 매개변수를 삽입합니다.
paste Printername.txt Printerip.txt | awk '{print "-p", $1, "-v", $2, "-E ..."}'
마지막으로 xargs
이를 명령에 대한 인수로 사용합니다.
paste Printername.txt Printerip.txt | awk '{print "-p", $1, "-v", $2, "-E ..."}' |
xargs -L1 lpadmin
-L1
xargs
명령을 실행할 때마다 한 줄의 입력을 사용 하겠습니다 . 일부 분할을 수행하므로 -p
프린터 이름 등이 별도의 인수로 전달됩니다. 이는 프린터 이름에 공백이나 기타 특수 문자가 포함되지 않은 경우 가장 효과적입니다.
또는 with를 사용하여 sh
입력 xargs
을 매개변수로 배치할 수 있습니다.
paste -d '\n' Printername.txt Printerip.txt | xargs -d '\n' -n2 sh -c 'lpadmin -p "$1" -v "$2" -E ...' _
답변2
join
를 사용하여 이 두 파일을 연결할 수 있습니다 . 아마도 xargs
, 또는 for i in …
.