Linux/bash의 한 줄의 코드는 복잡한 명령문을 인쇄합니다.

Linux/bash의 한 줄의 코드는 복잡한 명령문을 인쇄합니다.

두 개의 데이터 열이 있는 파일이 있습니다.

kevin n1

edwin n2

mevin n3

나는 이런 선언문을 생성하고 싶다.

--This is kevin and his 'roll number' is n1

--This is edwin and his 'roll number' is n2

--This is mewin and his 'roll number' is n3

이제는 이 작업을 수행하는 데 사용할 수 없습니다 awk. 명령문 중간에 대시 "--"나 작은따옴표(')를 사용하지 않습니다.

위에 표시된 것과 같은 출력을 원합니까?

답변1

awk를 사용하세요:

awk 'NF{print "--This is " $1 " and his \047roll number\047 is " $2 }' file

\047작은따옴표에 대한 8진수 코드입니다 '.

또 다른 옵션은 작은따옴표 문자가 포함된 변수를 정의하는 것입니다.

awk -v sq="'" 'NF{print "--This is " $1 " and his "sq"roll number"sq" is " $2 }' file

답변2

단순 while루프:

while read -r name roll; do if [[ -z "$name" ]]; then echo ; else echo "--This is $name and his 'roll number' is $roll"; fi; done < infile
--This is kevin and his 'roll number' is n1

--This is edwin and his 'roll number' is n2

--This is mevin and his 'roll number' is n3

이 솔루션은 OP가 원하는 것처럼 보이므로 빈 줄을 유지합니다.

infile다음과 같이:

cat infile 
kevin n1

edwin n2

mevin n3

여기에는 오류 처리 등이 없으며 물론 OP에서 지정한 파일 형식에 따라 다릅니다.

답변3

펄 한 줄:

perl -ane '@F && printf "--This is %s and his '\''roll number'\'' is %s\n", @F' file

관련 정보