很容易找到有关如何打印65个字符或更多字符的说明(Google“sed one-liners”),但我无法弄清楚实际编辑一行的语法(即,在这样一条线上做替代。
答案 0 :(得分:1)
对包含65个或以上字符的行进行更改。
sed '/^.\{65,\}/s/.*/llll/' file
这会将包含65个或以上字符的行中的所有字符替换为llll
。替换仅适用于那些线路。
^.\{65,\}
搜索模式,仅匹配满足给定条件的那些行。 \{65,\}
称为重复量词,它重复前一个令牌(即.
)65次或更多次。要保存所做的更改,您需要在sed命令中添加内联编辑-i
参数。
答案 1 :(得分:0)
实际上,我能够将它拼凑在一起。我想做的就是用“bar”替换“foo”,但前提是该行有65个或更多字符。事实证明它看起来像这样:
sed '/\(^.\{65\}\)/s/foo/bar/' num.tmp
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed 's/./&/65;T;s/pattern/replacement/' file
单独更换角色65,如果替换失败,则以其他方式取消...
答案 3 :(得分:-1)
我认为您需要-i
选项。
$ man sed
输出: ...
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)