2015-04-03 4 views
1

Я пробовал две разные команды sed против текстового файла с именем «file1.txt». Я получил тот же результат. То, что я не понимаю, - это значение или использование опции «G»! Я искал в Интернете, но я не мог найти хороший ответ!Что делает «G» с командой sed?

Вот две команды:

sed 'G' file1.txt 
sed '/^$/d;G' file.txt 

Обе команды дают тот же результат! Они создают разрыв в одной строке между каждой строкой в ​​текстовом файле! Я знаю, что «^ $» относится к строке, содержащей ничего, но что делает «G». Например, если я поставил 'd' вместо 'G', все пустые строки будут удалены!

+3

Вы должны читать 'man sed' – nu11p01n73R

+0

@ nu11p01n73R Я прочитал справочную страницу для sed, но объяснение очень ограниченное или короткое! –

+0

@ nu11p01n73R Вы выражаете настроение, что нет необходимости в SO или разговоре, ни о каких-либо сторонах страниц. smh немного – iletras

ответ

0

Согласно sed man

g 

Заменить содержимое шаблона с содержимым трюма.

G 

Добавление новой строки к содержимому шаблона, а затем добавить содержимое трюма к тому, что часть шаблона.

3

Get with g or G

Вместо замены трюма с шаблоном, вы можете скопировать трюм к шаблону с помощью команды «г». Это удалит пространство шаблонов. Если вы хотите добавить в пространство шаблонов, используйте команду «G». Это добавляет новую строку в пространство шаблонов и копирует пространство удержания после новой строки.

То есть, вместо того, чтобы поменять местами текущее содержимое трюма и шаблона (текущей строки, и т.д.) вы можете взять шаблон пространство и скопировать его в трюма (либо замене или добавлении к трюма в процесс).

Эти две команды sed относятся к idiomatic sed one-liners, которые вы можете найти online, и они делают то же самое только для определенных файлов (в них нет пустых строк).

# double space a file 
sed G 

# double space a file which already has blank lines in it. Output file 
# should contain no more than one blank line between lines of text. 
sed '/^$/d;G' 
Смежные вопросы