将文本文件中的单词插入命令中

将文本文件中的单词插入命令中

我有一个文本文件,其中包含 100 多个单词的列表,每行一个单词:

Oliver.txt
Jack.txt
Noah.txt
Leo.txt
William.txt

我想将文本文件内容转换为

gallery-dl -g -i Oliver.txt > OliverX.txt
gallery-dl -g -i Jack.txt > JackX.txt

所有单词依此类推。我怎样才能做到这一点?

答案1

在 GNU awk 中:

awk -i inplace -v FS="." '{print "gallery-dl -g -i " $1 ".txt > " $1 "X.txt"}' FILE

它将替换的内容文件与新的内容。-i inplace如果您想将新内容打印到标准输出并拥有原始内容,请删除文件完好无损的。

答案2

perl您可以使用or中几乎相同的语法轻松完成此操作sed

sed

$ sed -E 's/(.*).txt/gallery-dl -g -i \1.txt > \1X.txt/' file
gallery-dl -g -i Oliver.txt > OliverX.txt
gallery-dl -g -i Jack.txt > JackX.txt
gallery-dl -g -i Noah.txt > NoahX.txt
gallery-dl -g -i Leo.txt > LeoX.txt
gallery-dl -g -i William.txt > WilliamX.txt

perl

$ perl -pe 's/(.*).txt/gallery-dl -g -i \1.txt > \1X.txt/' file
gallery-dl -g -i Oliver.txt > OliverX.txt
gallery-dl -g -i Jack.txt > JackX.txt
gallery-dl -g -i Noah.txt > NoahX.txt
gallery-dl -g -i Leo.txt > LeoX.txt
gallery-dl -g -i William.txt > WilliamX.txt

答案3

使用(以前称为 Perl_6)

raku -pe 's/ ^ (.+) \.txt $ /gallery-dl -g -i $0.txt > $0X.txt/;' 

与 @terdon 的 Perl(5) 代码类似,Raku 的捕获从$01 开始,而不是像 Perl(5) 中那样。上面的代码(.+)要求扩展名前至少有一个字符\.txtalnumRaku 替换运算符左半部分中的所有非字符s///必须转义才能被理解为文字(例如\.txt)。最后,Raku 替换运算符的左半部分s///默认是允许空格的。

输入示例:

Oliver.txt
Jack.txt
Noah.txt
Leo.txt
William.txt

示例输出:

gallery-dl -g -i Oliver.txt > OliverX.txt
gallery-dl -g -i Jack.txt > JackX.txt
gallery-dl -g -i Noah.txt > NoahX.txt
gallery-dl -g -i Leo.txt > LeoX.txt
gallery-dl -g -i William.txt > WilliamX.txt

https://raku.org

相关内容