두 개의 열이 있는데 한 열에는 20개의 데이터가 있고 두 번째 열에는 16개의 데이터가 있습니다. 그래서 두 열의 길이가 동일해지기를 원합니다. 그러면 어떻게 0을 추가합니까? 다음과 같은 파일이 있습니다.
1 2
3 4
4 5
7
8
8
따라서 첫 번째 열에는 6개의 요소가 있고 두 번째 열에는 3개의 요소가 있습니다. 그래서 두 번째 열에 0을 추가하여 두 열을 동일하게 만들고 싶습니다. 따라서 출력 파일은 다음과 같아야 합니다.
1 2
3 4
4 5
7 0
8 0
8 0
답변1
그리고 awk
:
awk 'NF < 2 {$2 = 0}; 1' < file
0
주어진 레코드의 필드 수( )가 NF
2보다 작으면 두 번째 필드가 로 설정됩니다.
이는 필드가 없는 행(빈 행)에 대해 제공됩니다 " 0"
. 대신 다음을 수행할 수 있습니다.
awk 'NF < 1 {$1 = 0}; NF < 2 {$2 = 0}; 1' < file
OR 이 줄을 사용하려면 "0 0"
:
awk 'NF && NF < 2 {$2 = 0}; 1' < file
빈 줄을 유지하세요.
답변2
이 시도,
awk -v OFS=" " '{if ($2=="") print $0,0; else print $0}' file
1 2
3 4
4 5
7 0
8 0
8 0
답변3
awk
이 목적으로 사용할 수 있습니다 :
awk '{if (NF == 2) print $1 " " $2; else if (NF == 1) print $1 " 0";}' input_file.txt > output_file.txt
이는 파일을 한 줄씩 읽고 두 개의 "필드"(즉, 공백으로 구분된 텍스트 문자열)가 있는 모든 줄에 대해 두 필드를 모두 인쇄하지만 필드가 하나만 있는 모든 줄의 경우 해당 필드와 구분 기호가 있는 " 0"을 인쇄합니다. 그 사이의 공간.
여기서는 텍스트 조정이 수행되지 않으며 파일에 하나 또는 두 개의 숫자가 있는 줄만 포함되어 있다고 가정하므로 여기에서는 검사가 수행되지 않습니다(포함하는 것이 쉬울지라도). 하나 또는 두 필드가 모두 없는 행은 출력에서 무시됩니다.