在bash中循环遍历每行文本文件

时间:2012-02-19 22:26:06

标签: bash text

以下是文字的内容:

428, "http://www.youtube.com/watch?v=aqlJl1LfDP4", "NEW YORK,NEW YORK- FRANK SINATRA - YouTube", "moc.ebutuoy.www.", 1, 0, 0, 20, 96, 1329427038818198, "aiODk063S1YW" 
429, "http://www.youtube.com/watch?v=KIiUqfxFttM&feature=list_related&playnext=1&list=AVGxdCwVVULXfJnKOaSACBmNaC6ZZ71zS7", "Frank Sinatra - That's Life - YouTube", "moc.ebutuoy.www.", 1, 0, 0, 20, 96, 1329427228164029, "96X5yyV88p8v"

id,url,title,...unnecessary info...

我想在bash脚本中获取文本文件的每一行。获取第二个参数(url),然后将其修补到脚本中。

我不确定如何为每一行循环,然后拉出第二个参数。

由于

4 个答案:

答案 0 :(得分:2)

for URL in $(cut -d, -f2 < file)
do
    echo $URL
done

答案 1 :(得分:1)

cut -f 2 -d " " thefile.txt

答案 2 :(得分:0)

打印每行的第二个参数:

awk '{ print $2 }' thefile.txt

在脚本中使用它(即循环遍历它):

for URL in `awk '{ print $2 }' thefile.txt`
do
    echo $URL
done

需要注意的一件重要事情是,",将包含在网址中。

如果你想删除它们,只需抓住第二个参数的子串:

awk '{ print substr( $2, 2, length($2) -3 ) }' thefile.txt

我们从该行的第二个字符开始,并显示该行的全长-3。

循环:

for URL in `awk '{ print substr( $2, 2, length($2) -3 ) }' thefile.txt`
do
    echo $URL
done

答案 3 :(得分:0)

根据Oli的回答,您可以使用sed删除开头"和最终",

cut -f 2 -d " " thefile.txt | sed -e "s/^\"//" -e "s/\"\,$//"