cut -f [duplicate] 출력 이해

cut -f [duplicate] 출력 이해

기다려 주셔서 감사합니다. 저는 Linux를 처음 사용하므로 cut 명령의 출력을 구문 분석하는 방법을 이해하는 데 도움이 필요합니다.

그래서 현재 변수가 있습니다.

x=$(discover nginx --human=nood | cut -f1,6)

그래서 내 출력은 echo "$x다음과 같은 목록입니다

인스턴스 ID IP 주소

내 프로그램에서 x의 각 행에 대해 for 루프를 실행하고 각각 첫 번째 변수와 두 번째 변수를 추출하고 싶습니다. 예: 배열인 경우 a[0] = 인스턴스 ID 및 a[1] = IPDeress

누군가 요소를 개별적으로 추출하는 방법을 안내해주세요. 루프를 실행 $x하고 그 안에서 잘라낼 수 있다는 것을 알고 있지만 더 좋은 방법이 있는지 배우고 싶습니다.

답변1

이렇게 하려면 데이터를 변수에 저장할 필요가 전혀 없으며 다음 출력을 반복하면 됩니다 discover.

discover nginx --human=nood | cut -f 1,6 |
while read -r instanceID IPAddress; do
    # Use "$instanceID" and "$IPAddress" here
done

또는 bash프로세스 대체를 이해하는 쉘에서( <( ... )):

while read -r instanceID IPAddress; do
    # Use "$instanceID" and "$IPAddress" here
done < <( discover nginx --human=nood | cut -f 1,6 )

이 둘의 차이점은 일부 변수의 값을 전달하려는 경우에만 표시됩니다.루프에서 벗어나기. 첫 번째 예에서는 루프가 서브쉘에서 실행되므로 루프 내에 설정된 변수 값을 사용하지 않습니다.뒤쪽에루프(자체 로컬 환경에 존재함)

두 번째 예에서는 관련된 하위 쉘이 없으므로(프로세스 교체를 사용하고 실행하는 하위 쉘 제외 discover) cut루프 후에 변수 값에 액세스할 수 있습니다.

관련 정보