Обратите внимание, что по умолчанию в Ubuntu НЕ регистрируются входы ssh в файл / var / log / auth
. Это уровень ведения журнала INFO
.
Если вы хотите, чтобы он включал попытки входа в систему в файл журнала, вам необходимо отредактировать файл / etc / ssh / sshd_config
(как root или с помощью sudo) и изменить LogLevel
с INFO
на VERBOSE
.
После этого перезапустите демон sshd с помощью
sudo service rsyslog restart
. После этого попытки входа в систему ssh будут регистрироваться в файле /var/log/auth.log
.
nl
- это утилита для нумерации строк файла. Использование:
nl /path/to/file
В вашем конкретном случае:
$ nl -s ' & ' input.txt
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
Python может быть хорошим альтернативным инструментом для этого:
$ python -c "import sys;lines=[str(i)+' & '+l for i,l in enumerate(sys.stdin,1)]; print ''.join(lines)" < input.txt
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
Это работает так, что мы перенаправляем текст в stdin Python и читаем строки оттуда. Функция enumerate ()
- это то, что дает количество строк, при этом sys.stdin
указан в качестве входных данных, а 1
является начальным индексом. Остальное просто - мы составляем список новых строк, преобразовывая index как строку, соединенную вместе со строкой '&'
, и самой строкой. Наконец, все, что собрано из списка, в один тест с помощью функции ''. Join ()
.
В качестве альтернативы, вот многострочная версия файла сценария или просто для удобства чтения:
#!/usr/bin/env python
import sys
for index,line in enumerate(sys.stdin,1):
print str(index) + ' & ' + line.strip()
Работает точно так же:
$ ./line_counter.py < input.txt
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
Но если вы предпочитаете делать это в bash, то это тоже можно сделать:
$ counter=1; while read line ; do printf "%s & %s\n" "$counter" "$line" ; counter=$(($counter+1)) ; done < input.txt
1 & What & South Dragon & North Dragon & 5 \ hline
2 & What & South Dragon & North Dragon & 5 \ hline
3 & What & South Dragon & North Dragon & 5 \ hline
Это также вариант, использующий cat -n
с автоматической нумерацией:
while read num line;do echo $num "&" $line;done <<<$(cat -n a.txt)
Это достигает того, к чему вы ищете. (как и awk '$0=NR" и "$0' имя файла
, но это немного загадочно)
awk '{print NR,"&",$0}' filename
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
Или если sed
предпочтительнее, это дает тот же результат.
sed = filename | sed 'N;s/\n/ \& /'
perl
подходы.
perl -pe '$_="$. & $_"' filename
perl -pe 's/^/$. & /' filename