두 번째 필드를 추출하여 행으로 바꾸고 싶습니다.
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