sed
не поддерживает \d
, вместо этого вы можете использовать [0-9]
. Также по умолчанию sed
работает построчно, и вы не можете манипулировать символом \n
в конце строки. Есть способы преодолеть это, но я бы не советовал использовать sed
для этой задачи.
$ awk '{ORS = /[0-9]$/ ? RS : ""} 1' ip.txt
line1
line2
linelinelineline4
ORS
- это разделитель выходной записи /[0-9]$/
проверьте, заканчивается ли строка ввода цифрой - , если это так, используйте
RS
как ORS
(по умолчанию \n
) - , используйте пустую строку
1
- это идиома awk
в качестве ярлыка для печати содержимого $0
(входная запись)
perl
позволяет манипулировать символом новой строки поскольку он не удаляется и не добавляется обратно, как sed
или awk
$ perl -pe 's/(?<!\d)\n//' ip.txt
line1
line2
linelinelineline4