답변:
여기에 하나 xargs
xargs -n1 < file.txt
데모:
$ cat file.txt
106849_01373 106849_01967 106850_00082 23025.7_01059
$ xargs -n1 < file.txt
106849_01373
106849_01967
106850_00082
23025.7_01059
아주 쉬운 tr
:
tr -s '[:blank:]' '\n' <file.txt
예:
% cat file.txt
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
% tr -s '[:blank:]' '\n' <file.txt
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059
heemayl의 대답은 갈 길이지만 Perl을 사용하는 대안은 다음과 같습니다.
perl -lane '$,="\n"; print(@F)' file.txt
-l
: 자동 라인 엔딩 처리를 활성화합니다. 두 가지 별도의 효과가 있습니다. 먼저, -n 또는 -p와 함께 사용하면 $ / (입력 레코드 구분 기호)가 자동으로 숨겨집니다. 둘째, $ \ (출력 레코드 구분 기호)가 octnum 값을 갖도록 지정하여 모든 print 문에 해당 구분 기호가 다시 추가되도록합니다. octnum을 생략하면 $ \를 현재 값 $ /로 설정합니다.-a
: -n 또는 -p와 함께 사용하면 자동 분리 모드를 켭니다. @F 배열에 대한 암시 적 분할 명령은 -n 또는 -p에 의해 생성 된 암시 적 while 루프 내에서 첫 번째로 수행됩니다.-n
: Perl이 프로그램 주위에서 다음과 같은 루프를 가정하게하여 sed -n 또는 awk와 같은 파일 이름 인수를 반복합니다.
LINE:
while (<>) {
... # your program goes here
}
-e
: 한 줄의 프로그램을 입력하는 데 사용될 수 있습니다.
$,="\n"
: 출력 필드 구분자를 줄 바꾸기로 설정합니다.print(@F)
: 출력 필드 구분 기호로 구분 된 필드를 인쇄합니다.% cat file.txt
106849_01373 106849_01967 106850_00082 23025.7_01059
% perl -lane '$,="\n"; print(@F)' file.txt
106849_01373
106849_01967
106850_00082
23025.7_01059
AWK
접근하다. 기본적으로 필드의 출력 구분 기호를 변경하고 반복합니다. 테스트 파일은 마지막에 ENDLINE으로 반복 붙여 넣은 예제입니다.
$ awk 'BEGIN{OFS="\n"}{for(i=1;i<=NF;i++) print $i}' some_data
106849_01373
106849_01967
106850_00082
23025.7_01059
ENDLINE
106849_01373
106849_01967
106850_00082
23025.7_01059
ENDLINE
106849_01373
106849_01967
106850_00082
23025.7_01059
ENDLINE
나는 재미를 위해 파이썬 솔루션을 추가합니다.
python3 -c 'import sys; f=open(sys.argv[1]); print(*f.read().split(),sep="\n")' mytestfile
이 명령은 마지막에 인수로 변환하려는 파일 이름으로 '한 따옴표'로 한 줄짜리 Python 3 스크립트를 실행합니다. 구문은 다음과 같습니다.
python3 -c 'PYTHON_COMMAND_OR_1-LINE-SCRIPT' ARGUMENTS
우리가 사용하는 1 줄 스크립트는 다음과 같습니다 (명확성을 위해 여러 줄로 확장).
import sys
f=open(sys.argv[1])
print(*f.read().split(),sep="\n")
sys
명령 행 인수를 읽기 위해 모듈을 가져오고 첫 번째로 주어진 인수를 파일 이름으로 사용하여 파일에서 공백 문자로 구분 된 각 데이터 청크를 한 줄로 인쇄합니다.
$ cat mytestfile
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
106849_01373 106849_01967 106850_00082 23025.7_01059
$ python3 -c 'import sys; f=open(sys.argv[1]); print(*f.read().split(),sep="\n")' mytestfile
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059
106849_01373
106849_01967
106850_00082
23025.7_01059