각 줄의 내용을 유지하면서 텍스트 파일 (또는 stdin)의 줄 순서를 바꾸고 싶습니다.
즉, 다음으로 시작하십시오.
foo
bar
baz
나는 끝내고 싶다
baz
bar
foo
이에 대한 표준 UNIX 명령 줄 유틸리티가 있습니까?
답변
답변
또한 언급 할 가치가 있습니다 : tac
(the, ahem, reverse of cat
). coreutils 의 일부 입니다.
한 파일을 다른 파일로 뒤집기
tac a.txt > b.txt
답변
있다 잘 알려진 나오지 트릭 :
# reverse order of lines (emulates "tac")
# bug/feature in HHsed v1.5 causes blank lines to be deleted
sed '1!G;h;$!d' # method 1
sed -n '1!G;h;$p' # method 2
(설명 : 버퍼를 유지하기 위해 비 초기 라인 앞에 추가, 라인 교체 및 버퍼 유지, 끝에 라인 인쇄)
또는 awk one-liners에서 (빠른 실행으로) :
awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' file*
기억이 안 나면
perl -e 'print reverse <>'
GNU 유틸리티를 갖춘 시스템에서 다른 대답은 더 간단하지만 전 세계가 GNU / Linux는 아닙니다 …
답변
명령이 끝나면 다음을 입력하십시오.
| tac
tac은 정확히 당신이 요구하는 것을 수행합니다. “각 줄을 표준 출력에 마지막 줄에 기록하십시오.”
tac는 cat :-)의 반대입니다.
답변
당신은에 될 일 경우 vim
사용
:g/^/m0
답변
tac <file_name>
예:
$ cat file1.txt
1
2
3
4
5
$ tac file1.txt
5
4
3
2
1
답변
$ (tac 2> /dev/null || tail -r)
tac
Linux에서 작동하는을 사용해보십시오 . 그래도 작동하지 않으면 tail -r
BSD 및 OSX에서 작동합니다.