두 개의 데이터 열이 있는 파일이 있습니다.
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