Я изучаю немногих простых sed
команды.
Команда № 1
sed 's/\-.*//gw without' tgs.txt
Команда № 2
sed '/\-/s/\-.*//gw with' tgs.txt
Вывод № 1
$ cat with
2. Databases
6. Windows
Raja
Вывод № 2
$ cat without
2. Databases
6. Windows
Raja
Различие Между ними
$ diff with without
$
Каково различие между этими двумя командами?
Нет никакого различия между ними в действительности:
sed 's/\-.*//g'
sed '/\-/s/\-.*//g'
первая форма действует на весь строки, вторые действия формы только на тех строках, которые соответствуют /-/
адреса использования . Так как принятые меры включают -
, в действительности обе строки будут только влиять на тех, которые содержат -
.
Теперь, если бы Вы использовали /Raja/
в качестве адреса вместо этого, Вы только видели бы последнюю строку в with
- то есть, только те строки, которые содержали Raja
, и выполнили замену.
Эти две команды sed,
sed 's/\-.*//g'
sed '/\-/s/\-.*//g'
сделают то же задание. Позвольте мне объяснить как..
sed 's/\-.*//g'
заменит все символы от -
до последнего знака с пустой строкой. Если строка не будет иметь никакого -
символ тогда, то замена не произойдет. Таким образом, это не будет влиять на строки, которые не имеют дефиса -
символ.
sed '/\-/s/\-.*//g'
будет сначала искать строки, которые имеют -
символ. Если это найдет кого-либо, то это сделает замену (заменяет все символы от -
до последнего знака с пустой строкой) на тех строках.
, Таким образом, оба тот же . Ваша первая команда sed была бы достаточно. Вы не должны помещать условие поиска. Кроме того, с тех пор -
не специальный символ, Вы не должны выходить из него.