質問

$で区切られたテキスト(1〜N)を含むファイルを取得したとしましょう。 最終結果がNファイルになるようにファイルを切り分けるにはどうすればよいですか?

  

text1と改行$
  text2 $ etc ... $
  textN

awkまたはsedで何かを考えていますが、その種のタスクを既に実行しているUNIXアプリはありますか?

役に立ちましたか?

解決

たぶん split -p パターン

うーん。それは正確にはあなたが望むものではないかもしれません。行を分割せず、パターンを見たときに新しいファイルを開始するだけです。また、BSD関連のシステムでのみサポートされているようです。

次のようなものを使用できます:

awk 'BEGIN {RS = "<*>quot;} { ... }'

編集:ここで {...} 部分のインスピレーションを見つけることができます:

http://www.gnu.org/manual/gawk /html_node/Split-Program.html

編集: dmckeeからのコメントに感謝しますが、 csplit もパターンが発生する行全体をコピーするようです。

他のヒント

  

awk 'BEGIN {RS =&quot; $&quot ;; ORS =&quot;&quot;} {textNumber ++; $ 0を印刷&gt; &quot; text&quot; textNumber&quot; .out&quot; } 'fileName

アイデアをくれたビル・カーウィンに感謝します。

編集:ORS =&quot;&quot;を追加します各ファイルの最後に改行が出力されないようにします。

この権利を読んでいる場合、UNIXの cut コマンドはこれに使用されます。

cut -d $ -f 1- filename

構文が少しずれているかもしれませんが、$で区切られたフィールドを使用し、フィールド1から最後までを返すことをcutに伝える必要があります。

$をエスケープする必要がある場合があります。

awk -vRS="<*>quot; '{ print <*> > "text"t++".out" }' ORS="" file

splitコマンドを使用すると、文字列を使用して分割できます。

ただし、csplitコマンドを使用すると、正規表現に基づいてファイルをスリットすることもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top