tac를 사용하여 파일 문자를 문자 단위로 역방향

tac를 사용하여 파일 문자를 문자 단위로 역방향

tac텍스트 파일을 문자별로 반전하는 데 사용하고 싶습니다 . coreutils의 정보 페이지에서 다음과 같은 예를 발견했습니다. #파일을 문자별로 반전합니다.tac -r -s 'x\|[^x]'

그러나 실행하면 tac -r -s파일을 인쇄하는 대신 표준 입력이 열리는 것 같습니다. 무슨 'x\|[^x]'뜻이고 나는 무엇을 해야 합니까?

tac [file]또한 과 의 출력이 tac -r [file]동일하고 와 동일하다는 점도 언급했습니다 cat [file]. 여전히 문자 역순으로 문자를 알아낼 수 없습니다.

답변1

를 사용하여 파일을 문자별로 반전하려면 tac다음을 사용하십시오.

tac -r -s 'x\|[^x]'

이것은 문서화되어 있습니다info tac:

# Reverse a file character by character.
tac -r -s 'x\|[^x]'

-r구분 기호가 정규식으로 처리되도록 합니다..-s SEPSEP구분자로 사용. x\|[^x]는 모든 문자(인 문자 x와 아닌 문자 x)와 일치하는 정규 표현식입니다.

$ cat testfile
abc
def
ghi
$ tac -r -s 'x\|[^x]' testfile

ihg
fed
cba%
$

tac file한 줄만 있는 cat file경우를 제외 하고는 동일하지 않습니다 . 은 기본 구분 기호가 이기 때문에 와 동일합니다 . 이는 정규 표현식으로 처리할 때와 그렇지 않을 때 동일합니다.filetac -r filetac file\n

답변2

그 부분에 대해 걱정하지 않으신다면LF 문자(mosvy의 의견 참조) 필요한 경우 파이핑하는 것 rev보다 사용하는 것이 훨씬 더 효율적입니다 .tac -r -s 'x\|[^x]'tac

$ cat testfile
abc
def
ghi
$ rev testfile
cba
fed
ihg
$ rev testfile|tac
ihg
fed
cba

tac -r -s 'x\|[^x]'이 솔루션은 정규 표현식이 작업 속도를 상당히 느리게 하는 경향이 있기 때문에 훨씬 저렴합니다 .

관련 정보