Зацикливание на каждой строке текстового файла в bash - PullRequest
3 голосов
/ 20 февраля 2012

Вот как выглядит текст:

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 ]

2 голосов
/ 20 февраля 2012
for URL in $(cut -d, -f2 < file)
do
    echo $URL
done
1 голос
/ 20 февраля 2012
cut -f 2 -d " " thefile.txt
0 голосов
/ 20 февраля 2012

Опираясь на ответ Оли, вы можете удалить начало " и окончательное ",, используя sed:

cut -f 2 -d " " thefile.txt | sed -e "s/^\"//" -e "s/\"\,$//"
0 голосов
/ 20 февраля 2012

Вывести второй аргумент каждой строки:

awk '{ print $2 }' thefile.txt

Чтобы использовать его в скрипте (т. Е. Зациклить его):

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

Один важныйСледует отметить, что в URL будут включены " и ,.

Если вы хотите удалить их, просто возьмите подстроку второго аргумента:

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

Мы начинаем со 2-го символа в строке и показываем полную длину -3 строки.

В цикле:

for URL in `awk '{ print substr( $2, 2, length($2) -3 ) }' thefile.txt`
do
    echo $URL
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...