Что awk может сделать это, sed не может?

Три ТОЧКИ как Оператор Нащельной рейки (...) (начиная с PHP 5.6)

PHP имеет оператор "..." (Три точки), который отнесен как Оператор Нащельной рейки. Это используется для передачи произвольного числа параметров в функции, и этот тип функции вызывают Функции Variadic. Let’s берут примеры к использованию "..." (Три точки).

Пример 1:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}

echo calculateNumbers(10, 20, 30, 40, 50);

//Output 150
?>

Каждый аргументы calculateNumbers () функция проходят через $params как через массив когда использование "†¦".

существует много различных способов использовать оператор "†¦". Ниже некоторых примеров:

Пример 2:

<?php
function calculateNumbers($no1, $no2, $no3, $no4, $no5){
    $total = $no1 + $no2 + $no3 + $no4 + $no5;
    return $total;
}

$numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers(...$numbers);

//Output 150
?>

Пример 3:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}
$no1 = 70;
$numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers($no1, ...$numbers);

//Output 220
?>

Пример 4:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}

$numbers1 = array(10, 20, 30, 40, 50);
$numbers2 = array(100, 200, 300, 400, 500);
echo calculateNumbers(...$numbers1, ...$numbers2);

//Output 1650

?>
5
задан Niklas 22 September 2014 в 09:19
поделиться

5 ответов

Одно из основных отличий заключается в том, что программа awk может поддерживать состояние и может работать с использованием нескольких проходов над одними и теми же данными. Вызов sed обязательно является однопроходным без сохранения состояния, потому что sed (Stream EDitor) изначально ориентирован на поток. Однако преимущество в том, что это делает sed более простым и подходящим для использования в конвейерных цепочках.

9
ответ дан 18 December 2019 в 06:36
поделиться

G'day,

Awk более мощный. sed имеет тенденцию быть более ограниченным в том, что он может делать.

Sed хорош для построчных изменений данных. В нем есть несколько простых циклических конструкций, обычные элементы регулярных выражений ed / ex / vi и функции подстановки, составные операторы, решения и т. Д. Большинство людей используют его для изменения передаваемых данных.

Awk хорош для фильтрации или переупорядочения данных. Его чаще всего используют для составления отчетов.

Я бы посоветовал взглянуть на отличную книгу Дейла Догерти «sed & awk» ( продезинфицированная ссылка на Amazon ). Кстати, здесь также есть одно из лучших объяснений регулярных выражений.

Многие люди все равно сказали бы использовать Perl! (-:

Редактировать: Забыл сказать, что язык awk очень похож на язык C, что неудивительно, учитывая, что 'k' в awk означает Брайана Кернигана. Да. Это Брайан Керниган!

Также sed работает только с потоками данных, тогда как awk работает как с потоками данных, так и с файлами.

HTH

ура, Sed работает только с потоками данных, тогда как awk работает с как потоки данных, так и файлы.

3
ответ дан 18 December 2019 в 06:36
поделиться

В оригинале (и до сих пор лучший) книга, Язык программирования AWK , реализовано следующее (среди прочего):

  • простой ассемблер
  • компилятор рекурсивного спуска
  • программа индексирования текста

Попробуйте сделать это с сед.

7
ответ дан 18 December 2019 в 06:36
поделиться

Единственное, что я могу придумать, - это то, что sed может делать небольшие изменения за меньшее количество символов в awk. Так что для быстрой настройки живой оболочки ее быстрее набирать.

3
ответ дан 18 December 2019 в 06:36
поделиться

SED является потоковым редактором и поэтому не имеет переменных и некоторых других конструкций, подобных AWK. AWK - полноценный язык.

2
ответ дан 18 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: