2016-01-12 93 views
0

如何使用sed命令编写代码,在该代码中,我将使用存储在特定文件中的URL下载某些图像,然后还使用包含图像名称的另一个文件继续指定专有名称。如何使用sed命令退出

我曾尝试下面的代码

#!/bin/bash 
COUNT=$(cat Final | wc -l) 
COUNT=$(($COUNT+1)) 
num=1 
while read line 
do 
if [ $num != $COUNT ] 
then 
echo $num 
name=$(sed '$num q' SourceNameList) 
echo $name 
wget $line -O /Users/ankit/Downloads/imagesdownloded/$name 
num=$(($num+1)) 
fi 
done < imagelinks 

为下面的代码面对错误:

name=$(sed '$num q' SourceNameList) 

寻找如何使用使用sed的这个特定的命令变量

尝试以下以及

name=$(sed "$numq" SourceNameList) 
+0

'name = $(sed“$ {num} q”File)'?但它并不十分清楚你想要做什么。 (也许没关系)。这里有更多的代码。编辑你的Q包括样本输入和预期输出,也许你会得到更好的解决方案。 (许多'awk'人都会读'sed'Qs,这就是我会推荐的)。祝你好运。 – shellter

+0

你的问题是完全不清楚的,但我认为这是一个在sed中使用shell变量的简单例子:''sed“$ {num} q”SourceNameList'应该可以工作,假设其他的都行。您需要使用双引号,并且大括号可防止将“q”解释为变量名称的一部分。 –

+0

谢谢汤姆的工作 –

回答

3
name=$(sed '$num q' SourceNameList) 

用单引号,基本变量将不是被扩大。

name=$(sed "$numq" SourceNameList) 

你想扩展名为numq

变量你想要的

name=$(sed "$num q" SourceNameList) 
name=$(sed "${num}q" SourceNameList) 

不过一个,不必调用的sed的imagelinks文件的每一行:你可以同时从2个文件中读取

#!/bin/bash 
COUNT=$(($(wc -l < Final) + 1)) 
num=0 
while ((++num < COUNT)) && read -u3 line && read -u4 name 
do 
    echo $num 
    echo $name 
    wget "$line" -O /Users/ankit/Downloads/imagesdownloded/"$name" 
done 3< imagelinks 4< SourceNameList 
+0

真棒谢谢人 –

+1

@Ankit当它的工作,请接受他的答案。格伦会知道你真的得到了帮助,其他人不会试图回答你的问题。 –