Как читать строки и создавать файлы, удаляя https: // - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу, чтобы скрипт bash прочитал файл с n строкой и сделал следующее

1.Передача строки в качестве ввода в файл python (готово, проблем нет) 2.Создать файл и перенаправить вывод python

for line in $(cat file.txt)
do
 touch $line-links
 python file.py $line > $line-links
done

проблема в file.txt состоит из ссылок в виде https://www.example.com. И когда я выполняю bash, он выдает ошибку

touch: https://www.example.com-links.txt: No such file or directory

Я понял, что должен удалить часть https: //, но как создать файл, удаляющий https: // из строки

Ответы [ 7 ]

2 голосов
/ 02 апреля 2020

Вы можете использовать простое расширение переменной.

См .:

for line in $(cat file.txt)
do
 url=${line##*//} 
 touch ${url}-links
 python file.py $ > ${url}-links
done
0 голосов
/ 02 апреля 2020

Вы можете использовать команду sed для выполнения sh задачи

 for line in $(cat file.txt)
    do
     variable=$( echo 'https://www.example.com' | sed 's/https\?:\/\///') | touch $variable // Using Sed to strip the https://
     $python file.py $line > $line-links

    done
0 голосов
/ 02 апреля 2020

Вариантов много, это один из них :)

for line in $(cat file.txt)
do

 domain=$( echo $line | awk -F '//' {'print $2'} ) 
 touch "$domain-links"
 $python file.py $line > $domain-links

done
0 голосов
/ 02 апреля 2020

Я разобрался с решением по-другому

for line in $(cat file.txt)
do
 echo $line | cut -d"/" -f3 | grep "\S" | xargs touch
 python file.py $line > $line
done

grep "\ S" используется для удаления пустых строк, на выходе будет создан файл domain.com

0 голосов
/ 02 апреля 2020

Вы можете использовать пока чтение l oop и расширение параметра.

while IFS= read -r url; do
  url=${url#*${url%%':'*}}
  url=${url#*'//'}
  > "$url"
  python file.py "$url" > "${url}-links"
done < file.txt
0 голосов
/ 02 апреля 2020
for line in $(cat file.txt)
do
 touch ${line-links/https:\/\//}
 python file.py $line > ${line-links/https:\/\//}
done

0 голосов
/ 02 апреля 2020

Вы можете использовать этот python скрипт. Сохраните это как update_line.py, а затем python update_line.py. Это удалит все https: // в файле

fpath = 'file.txt'
with open(fpath, 'r+') as f:
  lines = f.readlines()
  f.seek(0)
  f.truncate()
  for line in lines:
     line = line.replace('https://', '')
     f.write(line)
...