tac を使用してファイル文字を文字単位で逆方向

tac を使用してファイル文字を文字単位で逆方向

. tac​coreutils의 정보 페이지에서 다음 예를 찾았습니다. #Reverse a file Character by Charactertac -r -s 'x\|[^x]'

しかし、実行すると、tac -r -sファイルを印刷するのではなく、標準入力が開かれるようです。それは何を'x\|[^x]'意味し、どうすればよいですか?

tac [file]また、との出力はtac -r [file]同じですcat [file]。それでも文字ごとの反転を把握できません。

答え1

ファイルを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]と一致する正規表現です。xx

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

ihg
fed
cba%
$

tac fileExceptとは異なり、1行しかないcat file限り。正規表現として扱われても同じように扱われない場合、デフォルトの区切り文字はと同じです。filetac -r filetac file\n

答え2

気にしないなら低周波文字rev(mosvyのコメントを参照)必要に応じて配管する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]'このソリューションは、速度が大幅に遅くなる傾向がある正規表現よりはるかに安価です。

関連情報