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