Использовать столбцы в файле в качестве имен переменных выходного файла

Строка замены в s/PATTERN/REPLACEMENT/не является регулярным выражением.

Вы сможете захватить то, что совпадает с частью шаблона, и использовать его при замене, если хотите:

sed -r 's/foo(.*)foo/hat\1car/g' file

Это захватит все, что находится между двумя вхождениями fooв одной строке, и вставит этот бит между hatи car. \1говорит: «вставьте все, что было захвачено первыми круглыми скобками».

Обратите внимание, что .*является «жадным», поэтому, если у вас есть foobarfoofoobarfoo, \1будет barfoofoobar, а не bar.

0
06.12.2019, 03:43
1 ответ

Вот простой от -до -способ сделать это для каждой строки в вашем testregions.bed. Сначала удалите все пробелы в исходном файле testregions.bedи сохраните только числа в новом файле new.txtвот так:

cat testregions.bed | tr -d "[:blank:]" > new.txt

Затем вы создадите новый файл для каждой строки в вашем new.txtвот так:

cat new.txt | while read line do touch "$line".zip done

Затем вы можете удалитьnew.txt:

rm new.txt

Таким образом, ваш скрипт test.shдля создания .zipфайлов из testregions.bedбудет выглядеть следующим образом:

#!/bin/sh

cat testregions.bed | tr -d "[:blank"]" > new.txt
cat new.txt | while read line
do
        touch "$line".zip
done
rm new
0
28.01.2020, 03:03

Теги

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