我找到了这个帖子:
How to insert a new line character after a fixed number of characters in a file
但不幸的是,那里的答案对我没有帮助。
我有一个巨大的字符串$temp
,我希望在特定数量的字符(例如20)之后切断它以与上面的行匹配。在该数量的字符之后应该添加\n
,最后应将格式化的字符串插入变量中。如果弦的长度<1,则不应该切割。数字。
现在我坚持
sed -e "s/.\{20\}/&\n/g" <<< $temp
但它不起作用。
\n,而是添加空格。答案 0 :(得分:0)
最简单的可能是使用fold
实用程序,如您引用的主题中所建议的那样。例如:
printf "%s\n" "$temp" | fold -cw 20
当你说:
将其与上面的行匹配
...尝试uniq
程序清除(或计算)重复项可能会有所帮助:
printf "%s\n" "$temp" | fold -cw 20 | uniq
当然,如果你想要一个新变量的输出,请将它包装在$()
中,如下所示:
new="$(printf "%s\n" "$temp" | fold -cw 20 | uniq)"
答案 1 :(得分:0)
NewTemp="$( printf "%s" "${temp}" | sed -e 's/.\{20\}/&\
/g' )"
-i
),那么当源和目标相同时总是有点棘手。\n
来获取availbel(posix不允许更换模式中的\n
).