파일에는 다음이 포함됩니다.
Firstname=ABC
Lastname=XYZ
Country=USA
Firstname=DEF
Lastname=UVW
Country=UK
Firstname
, lastname
및 를 스크립트의 함수에 매개변수로 전달 Country
하고 두 번째 그룹에 대해 동일한 작업을 반복해야 합니다.
함수 사용법: 그 중 하나라도 누락된 경우 Country=
종료해야 하며 3개의 매개변수 모두 값이 있으면 명령을 실행해야 합니다.
답변1
어쩌면 이런 것을 시도해 볼 수도 있을까요?
awk 'BEGIN{RS="\n\n"}
{
split($1, a, "="); fname = a[2];
split($2, b, "="); lname = b[2];
split($3, c, "="); country = c[2];
if (fname != "" && lname != "" && country != "") {
command = "/path/to/your/script.sh "fname" "lname" "country;
system(command);
}
}' input_file.txt
/path/to/your/script
교체하여 시도했는데 echo
필드가 올바른 순서로 표시됩니다.
특정 이름, 성, 국가 조합에 대한 필드가 누락된 경우 해당 특정 조합에 대해 명령이 실행되지 않고 다음 조합으로 바로 이동합니다.
awk 명령이 빈 필드를 발견할 때 0이 아닌 반환 코드로 종료하고 다음 조합에서 명령을 실행하지 않으려면 다음을 시도하십시오.
awk 'BEGIN{RS="\n\n"}
{
split($1, a, "="); fname = a[2];
split($2, b, "="); lname = b[2];
split($3, c, "="); country = c[2];
if (fname != "" && lname != "" && country != "") {
command = "/path/to/your/script.sh "fname" "lname" "country;
system(command);
} else {
print "error: empty field in input file !";
exit 1
}
}' input_file.txt
그런 다음 쉘 변수에서 반환 코드를 테스트할 수 있습니다 $?
. 0이 아닌 경우 입력 파일 어딘가에 필드가 누락되고 누락된 필드 다음에 오는 모든 명령이 실행되지 않습니다.