일부 행에 대한 특정 열의 일부 누락된 값으로 인해 받은 텍스트 파일을 편집하는 데 몇 가지 문제가 발생했습니다. 예를 들어 파일의 모양은 다음과 같습니다(대부분).
ID10 dad prbM ATGD
ID11 mom prbF CDSF
ID12 mom CGDS
ID13 dad prbF FSDD
ID14 mom FDSF
보시다시피 prb
모든 항목에 대해 이 제공되지 않는 경우도 있습니다. 항목이 없을 때 두 개의 탭 구분이 있다는 것을 발견했습니다. 탭 사이에 문자열을 삽입하는 방법이 있나요? 예를 들어 다음과 같습니다.
ID10 dad prbM ATGD
ID11 mom prbF CDSF
ID12 mom none CGDS
ID13 dad prbF FSDD
ID14 mom none FDSF
답변1
를 사용하면 awk
필드가 실제로 탭으로 구분되어 있다고 가정합니다.
awk -F '\t' -v OFS='\t' '$3 == ""{$3 = "none"};1' input.txt
이것:
- 입력 필드 구분 기호를 단일 탭(
-F '\t'
) 으로 설정합니다. - 출력 필드 구분 기호를 탭(
-v OFS='\t'
) 으로 설정합니다. - 세 번째 필드가 비어 있는지 확인하고(
$3 == ""
), 그렇다면 문자열로 설정합니다."none"
- 그리고 항상 ( ) 줄을 인쇄합니다
1
.