Вот сценарий оболочки, который печатает короткую строку с данными в реальном времени:
#!/bin/bash
ifstat -q -i wlan0 -S 0.1 1 | perl -n -e '/(\d+\.\d+).*(\d+\.\d+)/ && print "Down: $1 KBps - Up: $2 KBps\n"'
Образец вывода:
Down: 4.25 KBps - Up: 0.00 KBps
Особая благодарность Эгилю за его ответ, который указал мне к ifstat.
Используйте sed:
sed 's/^/SOMETEXT1\nSOMETEXT2\n/; s/$/\nSOMETEXT3/' input.txt
Я заметил, что ваш список примеров начался с SOMETEXT3, поэтому я написал пример ниже с этим.
#!/bin/bash
sourceList=/path/to/source.list
newfile=/path/to/newfile
while read Line; do
echo $SOMETEXT3 >> $newfile
echo Line >> $newfile
echo $SOMETEXT1 >> $newfile
echo $SOMETEXT2 >> $newfile
done < $sourceList
Использование Perl:
perl -ne 'print("SOMETEXT1\nSOMETEXT2\n${_}SOMETEXT3\n")' file
-n: заставляет Perl предполагать следующий цикл вокруг вашей программы, что заставляет его перебирать аргументы в имени файла несколько как sed -n или awk: LINE:
while (<>) {
... # your program goes here
}
[ f6]: может использоваться для ввода одной строки программы. print("SOMETEXT1\nSOMETEXT2\n${_}SOMETEXT3\n"): печатает SOMETEXT1, за которым следует новая строка, а затем SOMETEXT2, а затем новая строка, за которой следует текущая строка, а затем SOMETEXT3. Удовлетворяет потенциальным специальным символам, таким как, например, \ и " в SOMETEXTN выбраны правильно.
Чтобы обработать файл на месте, вы можете добавить swift -i к команде:
perl -i -ne 'print("SOMETEXT1\nSOMETEXT2\n${_}SOMETEXT3\n")' file
% cat file
apple
banana
grape
orange
% perl -ne 'print("SOMETEXT1\nSOMETEXT2\n${_}SOMETEXT3\n")' file
SOMETEXT1
SOMETEXT2
apple
SOMETEXT3
SOMETEXT1
SOMETEXT2
banana
SOMETEXT3
SOMETEXT1
SOMETEXT2
grape
SOMETEXT3
SOMETEXT1
SOMETEXT2
orange
SOMETEXT3
Вы можете использовать Vim в режиме Ex:
ex -sc '%s/.*/SOMETEXT1\rSOMETEXT2\r&\rSOMETEXT3/|x' file
% выбрать все строки s заменить x сохранить и закрыть