Это сделает ту же работу, что и tac
, то есть обратный порядок строк.Переписав скрипт sed в псевдокод, это означает:
$line_number = 1;
foreach ($input in $input_lines) {
// current input line is in $input
if ($line_number != 1) // 1!
$input = $input + '\n' + $hold; // G
$hold = $input; // h
$line_number++
}
print $input; // $p
Как видите, язык sed очень выразителен :-) 1!
и $
- это так называемые адреса, которые ставят условия, когдакоманда должна быть запущена.1!
означает не в первом ряду, $
означает в конце.Sed имеет один вспомогательный регистр памяти, который называется hold space
.
Для получения дополнительной информации введите info sed
на консоли linux (это лучшая документация).
-n
отключает команду по умолчанию print $input
в самом цикле.
Термины pattern space
и hold space
являются эквивалентами переменных $input
и $hold
(соответственно) в этом примере.