두 파일의 매개변수를 명령으로 전달하는 방법은 무엇입니까?

두 파일의 매개변수를 명령으로 전달하는 방법은 무엇입니까?

한 서버에서 다른 서버로 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

-L1xargs명령을 실행할 때마다 한 줄의 입력을 사용 하겠습니다 . 일부 분할을 수행하므로 -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 ….

관련 정보