Если вы проверите psinfo для процесса с PID 1 из В каталоге / proc вы можете получить такую структуру:
struct pr_timestruc64_t pr_start; /* process start time, time since epoch */
Вот веб-страница , которую вы можете использовать для справки.
(где ввод
- это файл, содержащий текст для повторения)
С GNU awk
(и при условии, что ввод не содержит байтов NUL):
awk -v n=100 -v RS='\0' -v ORS= '{while (n--) print}' < input
Переносимость :
awk -v n=100 -v ORS= '
{all = all $0 RS}
END {while (n--) print all}' < input
(обратите внимание, что если ввод не заканчивался символом новой строки, он будет добавлен).
Вы также можете делать такие вещи, как:
set --
n=100; while [ "$n" -gt 0 ]; do
set -- "$@" input
n=$((n - 1))
done
cat "$@"
Это будет работать независимо от того, какой байт содержит вход
. Однако обратите внимание, что для больших значений n
и если ваша оболочка не имеет встроенного cat
, вы можете достичь системного ограничения на размер аргументов команды (здесь кот
).
С помощью zsh
или последних версий bash
или ksh93
или yash -o braceexpand
для фиксированного текста вы можете делать что-то например:
printf '%.0sstring1\nstring2\nstring3\n' {1..100}
С zsh
:
repeat 100 print -l string{1..3}
Если мы дерзки, в системах с установленным GNU seq
мы также можем сделать:
seq -f 'string1
string2
string%.0g' 3.0001 0.0001 3.0100
С awk
:
echo "t1 t2 t3" | awk '{l=$0; for(i=1;i++<100;) l=l" "$0} END{print l}'
И с perl
:
echo "t1 t2 t3" | perl -ne 'chomp;print "$_ " x 100;'
Хотя этот вопрос помечен как awk
, я хотел бы добавить простое решение, которое не использует awk
:
seq 100 | xargs -n1 -I{} echo "1 2 3"
Если данные, которые вы должны повторить, находятся в файле, используйте вместо этого:
seq 100 | xargs -n1 -I{} cat filename
Другое решение может использовать команду yes
, которая просто повторяет свои аргументы:
yes "1 2 3" | head -n100
В / bin / bash
вы можете параметризовать свои печатные записи, чтобы вы могли распечатать любые три значения среди ваших файловых записей, n раз подряд. Они не обязательно должны быть последовательными.
Допустим, вы хотите распечатать записи 2, 3 и 6 из входного файла: inputfile
$ cat inputfile
A
B
C
D
E
F
$ awk -v RS='\n' '{if(NR=="2"||NR=="3"||NR=="6") a[NR]=$0} \
END{for(i=1;i++<=100;) {print a[2]"\n"a[3]"\n"a[6];}}' inputfile
Возможно, это стоит немного дороже, потому что вызывается массив.
Вместо использования AWK я бы просто использовал цикл for:
for i in $(seq 100); do
echo string1
echo string2
echo string3
done