줄과 문자별로 파일 반전

줄과 문자별로 파일 반전

입력하다:

hello
enrico

산출:

ocirne
olleh

이를 위해 간단히 tac파일을 생성하고 출력을 파이프로 rev(또는 그 반대로) 연결할 수 있으므로 해당 작업을 수행하는 함수는 다음과 같습니다.

revtac() { tac "$@" | rev; }

작업에 내장된 기능이 있나요?

<CR>Windows <LF>에서 생성된 파일을 되돌리기 때문에 이것이 문제가 될 수 있다고 생각 하지만 여전히 관심이 있습니다.

답변1

아니요, 이 작업에 적합한 내장 기능이 없습니다.

그건 그렇고, 내장 함수 tacrev내장 함수도 아닙니다. 이는 외부 바이너리이며 일부 *nix 시스템에는 이러한 바이너리가 없습니다.

Perl을 사용하여 구성을 시뮬레이션할 수도 있습니다.

perl -lne 'push @lines, scalar reverse; END { print for reverse @lines }' -- file

답변2

실제 필요에 따라 awk 또는 sed 스크립트를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' /path/YOURFILE | sed '1!G;h;$!d'

이것이 제가 테스트한 방법입니다:

$ cat /tmp/a
hello
enrico
$ sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' /tmp/a | sed '1!G;h;$!d'
ocirne
olleh
$ 

답변3

아니면 어이:

awk '
  function rev(s,   t,i) {
    for (i = length(s); i > 0; i--)
      t = t substr(s, i, 1)
    return t
  }
  { line[NR] = rev($0) }
  END { for (i = NR; i > 0; i--) print line[i] }
' file

관련 정보