按行分割文本文件并根据字符串内容重命名

按行分割文本文件并根据字符串内容重命名

我有一个 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 的“文件”部分命名的单独文本文件。因此第一个是“文件 1.txt.txt”,然后是“文件 2.avi.avi”,依此类推。除了命名实际文件之外,Split 完美地做到了这一点。

答案1

这很容易在 中完成awk。您只需将字段分隔符设置为/,然后将每一行打印到名称为最后一个字段的文件中。由于 中 的字段数awk保存在NF变量中,因此您可以使用 获取最后一个字段$NF。然后,如果您希望所有这些都具有 txt 扩展名,您只需要:

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

如果(根据您的评论似乎是这种情况),您的输入文件具有 Windows 行结尾,则需要删除第一个\r

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

相关内容