Давайте попробуем понять, как sed
читает Input_file, поэтому sed
читает строки по разделителю, который сам по себе является новой строкой.Это означает, что если строки разделены новой строкой, то в одной строке НЕ МОЖЕТ быть новая строка, пока / пока мы не дадим sed
знать, что нужно прочитать весь Input_file в цикле, а затем заменить новые строки (вид хранения значений в удерживающем пространствеэто функциональные возможности, предоставляемые sed
для сохранения значений в памяти для рабочих целей).Вот почему ваша первая команда НЕ оказывает никакого влияния, так как sed
не нашла ни одной строки, в которой есть новая строка.
Вот очень хорошая тема ( Как я могу заменить новую строку (\ n) используя sed? ) Я обнаружил, что через SO вы можете ознакомиться с его решением и его объяснением (взятым из этого потока) следующим образом.
sed ':a;N;$!ba;s/\n/ /g' Input_file
Объяснение вышекод:
1-Создать метку с помощью: a.
2- Присоединить текущую и следующую строку к пространству шаблона с помощью N.
3- Если мы находимся перед последней строкой, переходите к созданной метке $! Ba ($! Означает не делать этого в последней строке, так как должен быть один последний перевод строки).
4- Наконец подстановказаменяет каждую новую строку пробелом в пространстве образца (который является целым файлом).
Я хотел добавить свое объяснение выше, а затем добавить детали этого потока.