テキストファイルの各行を新しいファイルに書き込み、内容に応じて名前を付ける方法は?

テキストファイルの各行を新しいファイルに書き込み、内容に応じて名前を付ける方法は?

次のような行が多いテキストファイルがあります。

Smith: ''Handbook of Everything.'' Fantasy Press, 2000.
Wilson: ''Unix for Dummies.'' Wiley, 1993.

各行を新しいファイルに書きたいです。新しいファイルには行全体を含める必要があり、含まれている行と同じ名前でなければなりません。

Smith: ''Handbook of Everything.'' Fantasy Press, 2000.txt
Wilson: ''Unix for Dummies.'' Wiley, 1993.txt

この目標をどのように達成できますか?ありがとうございます。

答え1

使用awk:

awk '{ fname=$0 "txt"; print > fname; close(fname) }' file

答え2

テキストファイルを呼び出す場合は、textfile次のことを行う必要があります。

while read -r x
do
    echo "$x" > "${x}txt"
done < textfile

答え3

以下のようにbashスクリプトを作成できます。/tmp/textFile.txtテキストファイルの絶対パスで置き換えます。

#!/bin/bash
file=/tmp/textFile.txt
while IFS= read -r line
do
        printf "%s\n" "$line" > /tmp/"$line"txt
done < "$file"

関連情報