我正在尝试用换行替换具有多个空格的第一个地方。
例如:
123 yes foo bar #
会变成:
123 yes
foo bar #
我试过了
sed 's/^\s+/\n/' old > new
没有运气。我也对linux中允许我这样做的其他程序开放,比如awk,perl或bash。
答案 0 :(得分:3)
您尝试将行的开头与^
匹配。去掉它。你需要逃避+
角色。试试这个:
sed 's/\s\s\+/\n/' old > new
sed -r 's/\s\s+/\n/' old > new # less escaping with extended regex syntax
您还可以使用\{min,max\}
来定义更具体的重复。
sed 's/\s\{2,\}/\n/' old > new
sed -r 's/\s{2,}/\n/' old > new # less escaping with extended regex syntax
答案 1 :(得分:0)
您可以使用awk
:
awk '{sub(/ +/,RS)}1' file
123 yes
foo bar #
或者这个:
awk '{sub(/\s\s+/,RS)}1'
或者这个:
awk '{sub(/[[:space:]][[:space:]]+/,RS)}1'