Извлечение нескольких строк в соответствии с шаблоном в сценарии bash

Вы можете использовать rsyncдля их перемещения, предполагая, что ваш список файлов состоит из одного имени файла в строке.

rsync -av --remove-source-files --files-from filelist.txt sourceDir/ targetDir/

Если ваши файлы имеют абсолютные имена (, то есть имена начинаются с /), sourceDirдолжно быть /. В противном случае это должен быть корень относительных имен.

Пример

$ mkdir src dst
touch src/{one,two,three}
$ cat >filelist.txt <<EOF
one
two
EOF

$ ls src
one  three  two
$ ls dst

$ rsync -av --files-from filelist.txt --remove-source-files src/ dst/
building file list... done
one
two

sent 165 bytes  received 70 bytes  470.00 bytes/sec
total size is 0  speedup is 0.00

$ ls src
three
$ ls dst
one  two
0
08.09.2019, 03:55
1 ответ

Данные вашего примера выглядят как сломанный фрагмент json, поэтому вам действительно следует использовать jqдля извлечения из него того, что вам нужно перед тем, как делать то, что вы сделали с исходным вводом, который вызвал его выглядеть так.

Однако, чтобы извлечь URL-адреса, начинающиеся с https://wwwи не содержащие символ двойной кавычки -, из того, что у вас есть, вы можете использоватьgrep:

$ grep -o 'https://www[^"]*' input.txt 
https://www.mycompany.com/posts/aureliaflore_china-seoul-startup-activity-6571925510337728512-acAw
https://www.mycompany.com/posts/aureliaflore_reuters-top-news-on-twitter-activity-6571392661482233856-T3dO
https://www.mycompany.com/posts/aureliaflore_are-you-thinking-to-the-benefits-of-digitalization-activity-6570119712154451968-927T
0
28.04.2021, 23:29

Теги

Похожие вопросы