"tac"를 사용하지 않고 파일의 줄을 거꾸로 인쇄하는 방법은 무엇입니까?

"tac"를 사용하지 않고 파일의 줄을 거꾸로 인쇄하는 방법은 무엇입니까?

tac명령을 사용하지 않고 파일의 행을 거꾸로 인쇄 하고 싶습니다 . Bash로 이와 같은 작업을 수행할 수 있는 다른 솔루션이 있습니까?

답변1

sed시뮬레이션에 사용 tac:

sed '1!G;h;$!d' "${inputfile}"

답변2

그리고 ed:

ed -s infile <<IN
g/^/m0
,p
q
IN

당신이 BSD/ OSX(그리고 원하는 경우GNU/ linux또한이것은 POSIX가 될 것입니다):

tail -r infile

답변3

awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' file.txt

통과하다한 줄씩 앗

답변4

bash에서 이 작업을 요청한 대로 awk, sed 또는 perl을 사용하지 않고 bash 기능만 사용하는 솔루션은 다음과 같습니다.

reverse ()
{
    local line
    if IFS= read -r line
    then
        reverse
        printf '%s\n' "$line"
    fi
}

산출

echo 'a
b
c
d
' | reverse

d
c
b
a

예상대로.

그러나 행은 재귀적으로 호출되는 함수 인스턴스마다 하나씩 메모리에 저장됩니다. 대용량 파일을 다룰 때는 주의하세요.

관련 정보