Мне нужно найти более быстрый способ для нумерации строк в файле особым образом, используя такие инструменты, как awk и sed. Мне нужно, чтобы первый символ в каждой строке был пронумерован следующим образом: 1,2,3,1,2,3,1,2,3 и т. Д.
Например, если ввод был такой:
line 1
line 2
line 3
line 4
line 5
line 6
line 7
Вывод должен выглядеть так:
1line 1
2line 2
3line 3
1line 4
2line 5
3line 6
1line 7
Вот кусок того, что у меня есть. $ lines - это количество строк в файле данных, разделенное на 3. Поэтому для файла из 21000 строк я обрабатываю этот цикл 7000 раз.
export i=0
while [ $i -le $lines ]
do
export start=`expr $i \* 3 + 1`
export end=`expr $start + 2`
awk NR==$start,NR==$end $1 | awk '{printf("%d%s\n", NR,$0)}' >> data.out
export i=`expr $i + 1`
done
Как правило, это захватывает 3 строки за раз, нумерует их и добавляет к выходному файлу. Это медленно ... а потом немного! Я не знаю другого, более быстрого способа сделать это ... какие-нибудь мысли?