Это будет выполнять ту же работу, что и 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
Как вы можете видеть, СЕПГ язык очень выразителен :-) 1!
и $
так называемые адреса, которые ставят условия, когда команда должна быть запущена , 1!
означает не первый ряд, $
означает в конце. Sed имеет один дополнительный регистр памяти, который называется hold space
.
Для получения дополнительной информации введите info sed
на консоли linux (это лучшая документация).
-n
отключает команду по умолчанию print $input
в самом цикле.
Термины pattern space
и hold space
эквиваленты переменных $input
и $hold
(соответственно) в этом примере.
http://www.thegeekstuff.com/2009/12/unix-sed-tutorial-7-examples-for-sed-hold-and-pattern-buffer-operations/ – perreal
Почему вы удалили http: // stackoverflow.com/questions/9936151/piping-bash-input-arguments-in-egreps-regular-expression? Я подумал, что это хороший вопрос, и он получил хороший ответ. – sarnold
N.B. альтернативный способ написать это «sed» 1! G; h; $! d'' – potong