Покажу вам простой sh срипт для замены текста в файле. Ваша задача создать текстовой документ и расположить в нём маркеры, которые будут заменены на ваши слова. Нам поможет команда sed с ключом -i. Ключ -i означает замену строк в текстовом документе. Посмотрите на пример. Сначала мы объявляем переменные, потом происходит копирование файла. Далее происходит замена строк (маркеров). В конце выводим два файла. В оригинальном файле seg_test.txt наши не тронутые маркеры, а в файле seg_test2.txt результат замены строк. Вы можете заменить как одну строку, так и несколько строк. В нашем случае поиск строк осуществляется по всему документу.
#!/bin/bash
file1='seg_test.txt'
file2='seg_test2.txt'
hostname1='yandex'
hostname2='google'
hostname3='rambler'
hostname4='mail'
cp ./$file1 ./$file2
sed -i "s/#1#/наша замена: $hostname1/" ./$file2
sed -i "s/#2#/наша замена: $hostname2/" ./$file2
sed -i "s/#3#/наша замена: $hostname3/" ./$file2
sed -i "s/#4#/наша замена: $hostname4/" ./$file2
echo "до замены $file1:"
cat ./$file1
echo ""
echo ""
echo "после замены $file2:"
cat ./$file2
echo ""
#вывод:
#до замены seg_test.txt:
#1#
#2#
#3#
#4#
#
#после замены seg_test2.txt:
#наша замена: yandex
#наша замена: google
#наша замена: rambler
#наша замена: mail
Допустим вы парсите файл csv и у вас уйма строк с непонятными символами ;;. Для очистки всего файла используйте условие "/;;/ d". Посмотрите на пример.
#удаление строк с символами ;;
sed -i "/;;/ d" ./file.csv
Посмотрите на этот пример. Тут удаляются строки у которых количество символов ; больше одного. Если при экспорте эксельного файла в csv возникли пустые строки с символом ; , то срезайте их. Вся сложность в том, что количество символов ;..; в пустой строке может быть любым. Для этого случая используйте выражение '/^[;]\{1\}.*$/d'.
#пример файла csv
column1;column2;column3;;;;
Egor;Python;programmer;;;;
Ivan;PHP;programmer;;;;
;;;;
;;;;
;;;;
#удаление строк с символом ;
#ищем ;
sed -i "/^[;]\{1\}.*$/ d" ./file.csv
#ищем символы не похожие на строки(a-z) и числа(0-9),
#кириллические символы игнорируются
sed -i "/^[^:alnum:]\{1\}.*$/ d" ./file.csv
#тут учитываются кириллические символы
sed -i "/^;*\t*.$/d" ./file.csv
Вы можете перед парсингом любого текстового документа очистить его от пустых строк. Для этого воспользуйтесь условием /^$/.
#удаление лишних символов
sed -i "/^$/d" ./file.csv