fdisk -l /dev/sda | grep -m1 ^Disk | awk '{print $3 " " $4}'
Я считаю его очень полезным, чем все эти стандартные инструменты или записи протокола
Если я правильно понял, у вас fields.txt
файл с большим количеством строк. У вас есть несколько файлов res-0-n-0
. И для каждой строки в fields.txt
вам нужно скопировать их в results.txt
с содержимым файла res-0-<line_number>
, если он существует.
Я думаю, что вы можете просто читать файл fields.txt
построчно и отображать строку в файле results.txt
с содержимым файла res-0-<line_number>
, если это необходимо.
Я бы выбрал что-то вроде этого:
#! /bin/sh
LINE_NUMBER=0
while read line;
do
if [ -f "res-0-$LINE_NUMBER-0" ]
then
echo "$line $(cat res-0-$LINE_NUMBER-0)" >> result.txt
else
echo "$line" >> result.txt
fi
((LINE_NUMBER++))
done < fields.txt
Попробуйте создать сценарий sed, а затем применить его к файлу только один разfield.txt
:
while IFS='' read -r line; do
res=$(<res-0-"$line"-0)
real_line=$(( line + 1 ))
prinft "%s" "${real_line}s/.$/ ${res}/" >> myscript.sed
done < res_numbers_sorted.tmp
, а затем выполните:
sed -i -f myscript.sed field.txt
Таким образом, вы выполняете итерацию по большому файлу только один раз. Позвольте мне знать, если это помогает.