0

フォーム フィードを含む印刷出力ファイル (uncomp.txt) があります。\f 正規表現の一致に基づいて単一のドキュメントを複数のドキュメントに分割し、エポック時間でファイルを出力しようとしています。

私はこれを試しました:

$ csplit --prefix=$(date +%s) -s  /tmp/uncomp.txt "/%\f%/+1" "{*}"

これと同様に:

$ csplit --prefix=$(date +%s) -s  /tmp/uncomp.txt "/\f/+1" "{*}"

そしてこれさえ:

$ csplit -s  --prefix=$(date +%s) /tmp/uncomp.txt /\f/ {*}

しかし、毎回単一のファイルになってしまいます。どうやら \f 正規表現を取得していないようです...何が間違っていますか?

4

2 に答える 2

1

バッシュ ソリューション

csplit正規表現でリテラル フォームフィードが必要なようです。これを実現する 1 つの方法は、bash の$'...'構造を使用することです。

csplit --prefix=$(date +%s) -s  uncomp.txt $'/\f/+1' "{*}"

POSIX ソリューション

bash がない場合は、次を使用できますprintf

csplit --prefix=$(date +%s) -s  uncomp.txt "/$(printf "\f")/+1" "{*}"

または、同等に:

csplit --prefix=$(date +%s) -s  uncomp.txt "$(printf "/\f/+1")" "{*}"
于 2016-04-28T20:05:37.687 に答える