다음과 같이 쉼표로 구분된 필드 행이 포함된 데이터 파일이 있습니다.
United Kingdom, GB, +44
파일의 각 줄에 대해 다음 출력을 생성하고 싶습니다.
<option value="GB">United Kingdom +44</option>
awk를 사용하여 다음과 같은 결과를 얻었지만 꺾쇠 괄호를 추가한 후 출력이 엉망이 되었습니다.
BEGIN{FS=",";}
{
print "<option value=\"" $2 "\">";
}
답변1
awk의 printf
기능은 포함된 따옴표와 관련하여 사용하기 더 쉬울 수 있습니다.
awk -F, '{printf("<option value=\"%s\">%s %s</option>\n", $2, $1, $3)}'
문제는 각 필드 사이에 공백이 있다는 것입니다. 이 gsub
기능을 사용하여 각 필드를 다듬을 수 있습니다 .
awk -F, '{gsub(/^ +| +$/,"", $2); printf("<option value=\"%s\">%s %s</option>\n", $2, $1, $3)}'
또는 더 쉬운 방법은 필드 구분 기호를 변경하는 것입니다: awk -F' *, *' '{printf("%s %s\n", $2, $1, $3)}'
여러 필드를 잘라야 하는 경우 상황에 따라 루프나 함수를 사용하는 것이 더 나을 수 있습니다. 보다https://stackoverflow.com/questions/9985528/how-can-i-trim-white-space-from-a-variable-in-awk더 많은 정보를 위해서.
답변2
명령
awk -F "," '{print "<option value="$2">United Kingdom "$3"</option>"}' filename| sed 's/GB/"&"/g'
산출
<option value= "GB">United Kingdom +44</option>