我有这个:
sed -i '/^$/d' temp_spec.rb
Run Code Online (Sandbox Code Playgroud)
这是剥离空行并且运行良好。我怎样才能让它只对第 5-999 行(或理想情况下 5 行到文件尾)执行此操作。
我试过:
sed -n5,999 -i '/^$/d' temp_spec.rb
sed '5,999!d/^$/d' temp_spec.rb
Run Code Online (Sandbox Code Playgroud)
但都没有工作(没有错误)。
Uwe*_*Uwe 12
如果要删除第 5 行开始的所有空行并保留第 1 至 4 行,可以使用
sed -i '5,${;/^$/d;}' temp_spec.rb
Run Code Online (Sandbox Code Playgroud)
的{
是操作者的分组,所以第一个命令5,${
的意思是“从5行,直到输入结束($
)执行以下命令直到匹配的}
”。{
和之间的命令}
可以再次以地址为前缀,因此内部命令的/^$/d
意思是“如果行的开头(^
)和结尾($
)之间没有任何内容,则将其删除”。sed 命令可以用;
. (这是 sed 的一个记录不佳的功能。大多数 sed 实现都支持它,但它并不完全可移植。)正如 Hauke 所指出的,;
after{
是可选的;不过,前一个}
是必需的。
如果要删除从第 5 行开始的所有空行并删除第 1 到 4 行,则更简单:
sed -i '1,4d;/^$/d' temp_spec.rb
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16333 次 |
最近记录: |