sed可编辑(而不仅仅是打印)65个字符的行

sed可编辑(而不仅仅是打印)65个字符的行,sed,Sed,很容易找到关于如何打印包含65个或更多字符的行的说明(Google“sed one liners”),但我无法找出在这样一行上实际编辑一行(即进行替换)的语法。对包含65个或更多字符的行进行更改 sed '/^.\{65,\}/s/.*/llll/' file 这将替换具有65个或以上字符的行中的所有字符,使之成为llll。替换仅适用于这些行 ^.\{65,\}只匹配满足给定条件的行的搜索模式。\{65,\}称为重复量词,重复前面的标记(即)65次或更多次。要保存所做的更改,您需要将内联编辑-

很容易找到关于如何打印包含65个或更多字符的行的说明(Google“sed one liners”),但我无法找出在这样一行上实际编辑一行(即进行替换)的语法。

对包含65个或更多字符的行进行更改

sed '/^.\{65,\}/s/.*/llll/' file
这将替换具有65个或以上字符的行中的所有字符,使之成为
llll
。替换仅适用于这些行


^.\{65,\}
只匹配满足给定条件的行的搜索模式。
\{65,\}
称为重复量词,重复前面的标记(即
)65次或更多次。要保存所做的更改,您需要将内联编辑
-i
参数添加到sed命令。

我认为您需要
-i
选项

$ man sed
输出:


事实上,我能把它拼凑起来。我只想把“foo”替换为“bar”,但前提是这行有65个或更多字符。结果是这样的:

sed '/\(^.\{65\}\)/s/foo/bar/' num.tmp 
这可能适用于您(GNU-sed):


替换字符65本身,如果替换失败,则退出…

一个例子会更好。您的看起来比我的(下面)稍微简单。我将使用它。@AvinashRaj
不是必需的;
\{65\}
将匹配至少包含65个字符的每一行。是的,因为我们没有在正则表达式中使用end
$
锚点,
是不需要的。最多是相切的;这并不能回答OP的实际问题。
sed '/\(^.\{65\}\)/s/foo/bar/' num.tmp 
 sed 's/./&/65;T;s/pattern/replacement/' file