• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Как обернуть список строк любым текстом?

ukus

Member
21.02.2020
9
0
BIT
0
Привет, допустим есть список строк в "файл.txt" например внутри него обычный "лист" ip адресов, необходимо подставить с левой и правой стороны каждой строки произвольный текст.
В итоге должно быть так:

<любой текст>строка из листа<любой текст>
<любой текст>строка из листа<любой текст>
<любой текст>строка из листа<любой текст>

Как это можно сделать автоматически, желательно в терминале kali ну или другими инструментами?
 

kotoffski

Well-known member
14.07.2018
49
0
BIT
0
Если пользуешся вимом:

Код:
vim твой_файл

Enter + :
Для вставки строки TEXT в конец:
%s/$/TEXT/g
В начало:
%s/^/TEXT/g


Можно через sed:
Код:
sed 's/^/TEXT/g' твой_файл > новый_файл
sed 's/$/TEXT/g' твой_файл > новый_файл


Если в тексте нужно вставить '/', не забывай отбивать обратным слешем:
sed 's/^/TEX\/T/g' твой_файл > новый_файл

Несколько подстановок в одном выражении:
sed -e 's/$/TEXT/g' -e 's/^/TEXT/g' твой_файл > новый_файл
 
Последнее редактирование:

explorer

Platinum
05.08.2018
1 080
2 475
BIT
0
Скрипт на питоне:

Python:
with open(r'ip.txt', 'r+') as f:
    lines = list(map(lambda x: '<Your text>{}<Your text>\n'.format(x.strip()), f.readlines()))
    f.seek(0)
    [f.write(l) for l in lines]
print('Done!')

Замени название файла ip.txt на своё, ну и вместо <Your text> вставь то что требуется. Исходный файл будет перезаписан.
 

ukus

Member
21.02.2020
9
0
BIT
0
Если пользуешся вимом:

Код:
vim твой_файл

Enter + :
Для вставки строки TEXT в конец:
%s/$/TEXT/g
В начало:
%s/^/TEXT/g


Можно через sed:
Код:
sed 's/^/TEXT/g' твой_файл > новый_файл
sed 's/$/TEXT/g' твой_файл > новый_файл


Если в тексте нужно вставить '/', не забывай отбивать обратным слешем:
sed 's/^/TEX\/T/g' твой_файл > новый_файл

Несколько подстановок в одном выражении:
sed -e 's/$/TEXT/g' -e 's/^/TEXT/g' твой_файл > новый_файл

Получилось! спасибо за оперативный ответ! сделал так: sed 's/^/TEXT /g' test.txt > tmp1.txt; sed 's/$/ TEXT/g' tmp1.txt > out.html; sudo rm tmp1.txt
 

f22

Codeby Academy
Gold Team
05.05.2019
1 908
226
BIT
1 562
Как это можно сделать автоматически, желательно в терминале kali ну или другими инструментами?
Можно вот так через цикл в консоли.
for line in `cat файл.txt`; do echo "Здесь твой текст"${line}"Здесь твой текст" >> новый_файл.txt; done
Или так
while read line; do echo "Здесь твой текст"${line}"Здесь твой текст" >> новый_файл.txt; done < файл.txt
 

ukus

Member
21.02.2020
9
0
BIT
0
Скрипт на питоне:

Python:
with open(r'ip.txt', 'r+') as f:
    lines = list(map(lambda x: '<Your text>{}<Your text>\n'.format(x.strip()), f.readlines()))
    f.seek(0)
    [f.write(l) for l in lines]
print('Done!')

Замени название файла ip.txt на своё, ну и вместо <Your text> вставь то что требуется. Исходный файл будет перезаписан.
И вам спасибо! попробую так же и ваш метод, если кто еще знает способы, например через awk - предлагайте, лишним не будет :)

Возник еще вопрос - как при помощи sed объединить 2 файла в один, но что бы содержимое второго файла добавилось справа от содержимого первого?

есть файл1.txt в котором:

<длинная строка номер 1>
<длинная строка номер 1>
<длинная строка номер 1>

и есть файл2.txt в котором:

<длинная строка номер 2>
<длинная строка номер 2>
<длинная строка номер 2>

Нужно получить файл3.txt в котором:

<длинная строка номер 1> <длинная строка номер 2>
<длинная строка номер 1> <длинная строка номер 2>
<длинная строка номер 1> <длинная строка номер 2>

upd: Получилось сделать так - $ paste -d\ file1.txt file2.txt > out.txt
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!