sed -e 's/word1/word2/' -l 3 output > output2
Я тестирую эту команду. Я ожидал 3 символа для каждой строки. Но это не сработает. output2 имеет те же разрывы строк, что и output. Не понял ли я обертки строк?
Короче ... да, вы неправильно поняли штриховку;)
-l N, --line-length=N
specify the desired line-wrap length for the `l' command
Итак, он работает только с командой l:
l List out the current line in a ``visually unambiguous'' form.
l width
List out the current line in a ``visually unambiguous'' form,
breaking it at width characters. This is a GNU extension.
Если вы хотите получить три символа в строке, вы можете использовать это:
sed -nl 4 's/word1/word2/;l' output > output2
или это в GNU sed:
sed -n 's/word1/word2/;l 4' output > output2
Обратите внимание, что обратная косая черта назад escape break) добавляется, если на самом деле нет новой строки (конец строки обозначается символами $). Нам нужно использовать флаг -n, потому что команда l предназначена для просмотра, а не для редактирования, например, для команды =, и строка появится как обычно после того, как l выведет ее в запрошенной форме, если только
. Вы можете больше походить на то, что вы действительно хотите, просто разбивая файл после каждых трех символов:
sed 's/word1/word2/; s/.../&\n/g' output > output2
или разделить, скажем, 10 символы:
sed -r 's/word1/word2/; s/.{10}/&\n/g' output > output2
Короче ... да, вы неправильно поняли штриховку;)
-l N, --line-length=N
specify the desired line-wrap length for the `l' command
Итак, он работает только с командой l:
l List out the current line in a ``visually unambiguous'' form.
l width
List out the current line in a ``visually unambiguous'' form,
breaking it at width characters. This is a GNU extension.
Если вы хотите получить три символа в строке, вы можете использовать это:
sed -nl 4 's/word1/word2/;l' output > output2
или это в GNU sed:
sed -n 's/word1/word2/;l 4' output > output2
Обратите внимание, что обратная косая черта назад escape break) добавляется, если на самом деле нет новой строки (конец строки обозначается символами $). Нам нужно использовать флаг -n, потому что команда l предназначена для просмотра, а не для редактирования, например, для команды =, и строка появится как обычно после того, как l выведет ее в запрошенной форме, если только
. Вы можете больше походить на то, что вы действительно хотите, просто разбивая файл после каждых трех символов:
sed 's/word1/word2/; s/.../&\n/g' output > output2
или разделить, скажем, 10 символы:
sed -r 's/word1/word2/; s/.{10}/&\n/g' output > output2
Короче ... да, вы неправильно поняли штриховку;)
-l N, --line-length=N
specify the desired line-wrap length for the `l' command
Итак, он работает только с командой l:
l List out the current line in a ``visually unambiguous'' form.
l width
List out the current line in a ``visually unambiguous'' form,
breaking it at width characters. This is a GNU extension.
Если вы хотите получить три символа в строке, вы можете использовать это:
sed -nl 4 's/word1/word2/;l' output > output2
или это в GNU sed:
sed -n 's/word1/word2/;l 4' output > output2
Обратите внимание, что обратная косая черта назад escape break) добавляется, если на самом деле нет новой строки (конец строки обозначается символами $). Нам нужно использовать флаг -n, потому что команда l предназначена для просмотра, а не для редактирования, например, для команды =, и строка появится как обычно после того, как l выведет ее в запрошенной форме, если только
. Вы можете больше походить на то, что вы действительно хотите, просто разбивая файл после каждых трех символов:
sed 's/word1/word2/; s/.../&\n/g' output > output2
или разделить, скажем, 10 символы:
sed -r 's/word1/word2/; s/.{10}/&\n/g' output > output2