줄에 개행 문자 추가

줄에 개행 문자 추가

두 번째 필드를 추출하여 행으로 바꾸고 싶습니다.

cat > temp1
1   73
2   74
3   75

내 접근 방식:

cut -f2 temp1 | tr '\n'  '\t' > temp2

결과:

temp2
73  74  75  

당연히 줄 오른쪽 끝에 탭 구분 기호가 있지만 개행 문자가 없습니다. 이 문제를 해결하는 쉬운 방법이 있나요?

답변1

paste대신 사용하십시오 tr:

$ cut -f2 temp1 | paste -s
73  74  75

보이지 않는 공백 확인

$ cut -f2 temp1 | paste -s | od -c
0000000   7   3  \t   7   4  \t   7   5  \n
0000011

답변2

  cat file | cut -d' ' -f2 | xargs -n3
  73 74 75

보이지 않는 모든 공백을 확인하십시오.@glennjackman

cat file | cut -d' ' -f4 | xargs -n3 |  od -c

0000000   7   3       7   4       7   5  \n
0000011

답변3

새 줄을 인쇄/방출/제공하는 가장 쉬운 방법은 를 사용하는 것입니다 echo.

생성된 파일에 새 줄을 추가하는 것은 간단해 보입니다.

컷 -f2 temp1 | tr '\n' '\t' > temp2 에코 >> temp2

이 작업은 한 줄로 수행할 수 있습니다.

{ cut -f2 temp1 | tr '\n'  '\t' ; echo ; } > temp2

즉, 후행 탭이 문제가 되지 않는 경우입니다. 그렇다면 이를 제거하거나 생성을 피해야 합니다. 다음 중 하나가 트릭을 수행합니다.

awk 'NR>1{printf( "%s\t",a)}{a=$2}END{print a}' temp1 >temp2

sed -n 's/[0-9]*[[:blank:]]*//;1{h;d};H;${g;y/\n/\t/;p}' temp1 >temp2

sed 's/[0-9]*[[:blank:]]*//' temp1 | paste -sd '\t' >temp2

관련 정보