如何使用Sed命令退出行

时间:2016-01-12 18:08:19

标签: bash unix 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)

1 个答案:

答案 0 :(得分:3)

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

使用单引号,基本变量将展开。

name=$(sed "$numq" SourceNameList)

您正在尝试展开名为numq

的变量

你想要一个

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

但是,您不必为imagelinks文件的每一行调用sed:您可以同时从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