我需要在unix中使用正则表达式来确保文本文档中的任何行都不超过70个字符,而我找不到正确的表达式。我一直在努力:
sed "s/\(^.{70}\)/\1\n\r/g" firstMondayNoParas2.txt > firstMondayLined.txt
这个表达式虽然不起作用。我错过了什么?
答案 0 :(得分:2)
你还需要逃避花括号。
sed "s/^\(.\{70\}\)/\1\n\r/"
示例:强>
$ echo 'foobar' | sed 's/^\(.\{3\}\)/\1\n\r/'
foo
bar
$ echo 'foobar' | sed 's/^.\{3\}/&\n\r/'
foo
bar
如果你想减少每70个字符,那么你可以尝试这样,
sed 's/.\{3\}/&\n/g' file
示例:的
$ echo 'foobarbuzbu' | sed 's/.\{3\}/&\n/g'
foo
bar
buz
bu
您也可以使用perl
。
$ echo 'foobarbuz' | perl -pe 's/(.{3})(?!$)/\1\n/g'
foo
bar
buz
(.{3})(?!$)
将捕获每个三个字符,但不会捕获最后一个字符。因此,如果输入的字符数为3,则不会在最后添加额外的新行字符。要进行就地编辑,您必须添加-i
参数,例如
perl -i -pe 's/(.{70})(?!$)/\1\n/g' file