![如何将 cmd 中的以下“for /f”命令转换为 Linux centos 6,64 中的等效命令?](https://linux22.com/image/1554009/%E5%A6%82%E4%BD%95%E5%B0%86%20cmd%20%E4%B8%AD%E7%9A%84%E4%BB%A5%E4%B8%8B%E2%80%9Cfor%20%2Ff%E2%80%9D%E5%91%BD%E4%BB%A4%E8%BD%AC%E6%8D%A2%E4%B8%BA%20Linux%20centos%206%2C64%20%E4%B8%AD%E7%9A%84%E7%AD%89%E6%95%88%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
如何将以下 CMD 命令转换为 linux centos 6,64 中的命令?
for /f "tokens=1*" %i in (links.txt) do wget -O "%j" "%i"
PS:links.txt 是一个由制表符分隔的两列文件,一列包含链接,另一列包含文件保存方式的名称。
谢谢
答案1
awk
即使可以从文件中读取并在循环中编写所需的命令,但您可能会发现一个更舒适的命令:awk
。
如果文件名全部没有空格,您可以使用这个简单的语法来创建所需的命令,然后将此输出重定向 ( ) 到将执行该命令的|
shell ( )。 取第一列,取第二列,依此类推...sh
$1
$2
awk '{print "wget -O "$2,$1}' links.txt | sh
如果名称中有空格,则需要做更多操作:
awk -F $'\t' '{print "wget -O\""$2"\" " $1}' links.txt | sh
这里必须指定字段分隔符-F
为制表符 ( -F $'\t'
),并且必须打印"
文件名前后的内容。由于您位于字符串内,因此需要转义[2]他们
echo "Those are double quote\""
。
尝试不使用重定向来执行此命令(所以没有| sh
)有可能控制输出,然后在您确定时执行它......
使用man awk
以获得进一步的帮助。