テキストファイルを行ごとに分割し、文字列の内容に応じて名前を変更します。

テキストファイルを行ごとに分割し、文字列の内容に応じて名前を変更します。

独自のディレクトリに、次のコンテンツを含むWINDOWSテキストファイルがあります。名前は「test.txt」です。

サンプルソースファイル - test.txt:

hxxp://url.xxx/XX/file 1.txt
hxxp://url.xxx/XX/file 2.avi
hxxp://url.xxx/XX/file 3.mpg

最初のファイルの内容は次のとおりです。

hxxp://url.xxx/file 1.txt

ファイル名は次のとおりです。

file 1.txt

私の目標は、各URLを含み、URLの「ファイル」部分に基づいて名前付きの別々のテキストファイルを作成することです。したがって、最初のものは「File1.txt.txt」、次は「File2.avi.avi」などです。実際のファイルに名前を付けることに加えて、Splitはこれを完全に行います。

答え1

これはで簡単に行われますawk。フィールド区切り記号をに設定し、/最後のフィールド名を持つファイルに各行を印刷します。のフィールド数は変数awkに格納されるため、を使用して最後のフィールドを取得できます。次に、すべてのエントリにtxt拡張子を指定するには、次のものが必要です。NF$NF

awk -F'/' '{print > $NF".txt"}' file 

(あなたのコメントによると)入力ファイルにWindows行末がある場合は、最初の行末を削除する必要があります\r

sed 's/\r//' file | awk -F'/' '{print > $NF".txt"}' 

関連情報