탭을 사용할 때 sed에 문제가 있습니까? 대신 awk를 사용해야 하나요?

탭을 사용할 때 sed에 문제가 있습니까? 대신 awk를 사용해야 하나요?
cat file.tsv| sed '1icolumn1    column2   column3    column4    ...' > file2.tsv

저는 sed를 사용하여 .tsv파일에 첫 번째 줄(제목 태그)을 추가하고 있습니다. 태그는 탭으로 구분되어야 합니다. 저는 문자열을 구분하기 위해 리터럴 탭을 사용해 왔습니다.

문자열을 여러 번 확인했습니다. 그런데 태그가 누락되는 문제가 계속 발생합니다.

예를 들어, .을 얻는 대신 column1 column2 column3.로 끝나는 경우가 많습니다 column1 column2column3. 그런 다음 수정하려고 하면 column1column2 column3.

"\t"(성공하지 못했지만)를 사용하는 것과 같이 오류가 덜 발생하는 탭을 추가하는 다른 방법이 있습니까? awk더 나은 선택이 되지 않을까요 ?

답변1

printf한 가지 가능한 방법은 다음 명령을 사용하는 것입니다 .

printf "column1\tcolumn2\tcolumn3"

결과는 다음과 같습니다.

column1 column2 column3    

탭 포함:

printf "column1\tcolumn2\tcolumn3"|od -ax
0000000   c   o   l   u   m   n   1  ht   c   o   l   u   m   n   2  ht
        6f63 756c 6e6d 0931 6f63 756c 6e6d 0932
0000020   c   o   l   u   m   n   3 nul
        6f63 756c 6e6d 0033
0000027

(위 코드에서 0x09를 확인하세요. TAB입니다.)

귀하의 명령은 다음과 같습니다

cat <(printf "column1\tcolumn2\tcolumn3\n") file.tsv >file2.tsv

관련 정보