세로 형식의 데이터 목록이 있는데 가로 형식의 데이터 목록을 원합니다.
fl.txt
:
data
1
2
3
4
5
원하는 출력은 다음과 같습니다.
1 2 3 4 5
내 코드: 이 명령을 사용하면 마지막 값인 5만 인쇄됩니다.
paste -s -d "" fl.txt
답변1
Windows 텍스트 데이터가 포함된 파일을 사용하고 있다는 것은 주석을 통해 분명합니다. 다음 명령을 사용하여 Unix 텍스트 파일로 변환합니다 dos2unix
.
dos2unix fl.txt
Data
Unix 텍스트 파일이면 sed 1d fl.txt
헤더가 포함된 파일의 첫 번째 줄을 사용하거나 제거 할 수 있습니다 tail -n +2 fl.txt
.
결과 행은 모든 개행 문자를 공백으로 바꾸면 한 줄에서 공백으로 구분된 열로 변환될 수 있습니다.
sed 1d fl.txt | tr '\n' ' '
그러나 이렇게 하면 개행 문자로 끝나지 않는 출력이 생성됩니다.
paste
제안한 것과 비슷한 방식으로 사용할 수도 있습니다 .
sed 1d fl.txt | paste -s -d ' ' -
이 paste
명령은 개행 문자로 끝나는 단일 라인을 생성합니다.
답변2
GNU sed 사용
sed '1d; s/\r$//' f1.txt | paste -sd " "
또는 sed에 붙여넣기 부분을 구현하세요.
sed -n '1d; s/\r$//; H; ${ x; s/^\n//; s/\n/ /g; p }' f1.txt
답변3
Bash 또는 ksh93의 간단한 옵션:
echo $(<fl.txt)
또는:
xargs -a fl.txt
첫 번째 줄은 다음과 같이 삭제할 수 있습니다.
{ head -1 >/dev/null; paste -sd' '; } <fl.txt
또는:
{ head -1 >/dev/null; fmt -100; } <fl.txt
서브셸에서:
(>/dev/null head -1; xargs) <fl.txt