sed 进阶使用

sed 进阶使用

工作原理

sed 维护两个数据缓冲区: 活动模式空间辅助保持空间

  • 两者最初都是空的

  • sed 通过对每一行输入执行以下循环进行操作

    • 从输入流中读取一行,删除任何尾随的换行符,并将其放置在 模式空间
    • 然后执行命令,每个命令都可以有一个与之相关的 地址 【地址是一种条件代码,只有在执行命令之前验证了条件,才能执行命令】
    • 当到达脚本末尾时,除非使用 -n 选项,否则模式空间的内容将打印到输出流
    • 然后,下一个循环将为下一个输入行开始
  • 除非使用 特殊命令,否则将在两个循环之间删除 模式空间

  • 另一方面,保持空间 在周期之间保持其数据

地址

按数字选择行

  • number commands 指定行号 number 将仅匹配输入中的该行,比如:seq 6 | sed '3d' 删除第 3 行
  • first~step commands 从第 first 开始每隔 step 行进行匹配,可以计算 first + ( n * step ) 行的公式,其中 n 是周期,比如:seq 6 | sed '1~2d' 删除 1, 3, 5 行
  • $ 默认表示最后一行,但可以使用命令选项进行更改

文本匹配选行

默认的正则表达式是 BRE,通过 -E 或者 -r 选项可用 ERE

  • 形式 /regexp/ 如果正则表达式本身包含 / 字符需要进行转义 seq 6 | sed '\~3~d'

  • 正则表达式界限符 / 可以用任何其他单个字符代替,注意转义问题,比如 \%regexp%

  • 正则表达式匹配修饰符 是一个 GNU 扩展 /regexp/I

    • I: 用于不区分大小写的正则表达式匹配
    • M: 以多行模式匹配正则表达式

范围地址

通过指定用 逗号 分隔的两个地址来指定地址范围

  • n,m commands 表示第 n 行到 m 行,如果 m < n 仅匹配 n 行

  • number,/regexp/ commands 从 number 行开始到第一个匹配正则表达式的行结束:一个范围将始终跨越至少两行(输入流结束除外)

  • /regexp/,number commands 类似上面,第一个匹配正则表达式的行开始到 number 行结束(输入流结束除外)

  • /regexp/,/regexp/ commands 第一个正则表达式匹配的第一个目标行开始到第二个正则表达式匹配的第一个目标行结束

  • GNU 扩展

    • 0,/regexp/ 其中 0 会将尝试在第一输入行中匹配正则表达式,效果是正则表达式可以匹配第一行的内容
    • number,+N 在 number 行到 number+N 行
    • number,~N 从 number 行开始到 N 的倍数行结束

多行技术

可以使用 (D, G, H, N, P) 将多行作为一个缓冲区进行处理,它们与小写的对应项 (d, g, h, n, p) 相似,只是这些命令附加或减去数据同时考虑嵌入的换行符,允许从模式中添加和删除行并保留空格

  • D: 从 模式空间 中删除行,直到第一行换行,然后重新开始循环
  • G: 将 保留空间 中的行附加到 模式空间 ,并在其前面添加换行符
  • H: 将 模式空间 中的行附加到 保留空间 ,并在其前面添加换行符
  • N: 将输入文件中的行附加到 模式空间
  • P: 从 模式空间 打印行,直到第一行换行

(D, G, H, N, P) 用于多行,(d, g, h, n, p) 用于单行

例子:

$ seq 6
1
2
3
4
5
6
$ seq 6 | sed -n 'N;l;D'
1\n2$
2\n3$
3\n4$
4\n5$
5\n6$
  • 首先将第一行读入模式空间 ;;; 此时模式空间:(1)
  • 在每个循环开始时,N命令将 换行下一行 附加到 模式空间 ;;; 此时模式空间:(1\n2)
  • l 命令明确地 打印模式空间的内容,此命令在打印时会额外附带一个 $ 表示行末,输出 1\n2$ ;;; 此时模式空间:(1\n2)
  • 然后,D 命令删除 模式空间 的内容,直到第一行换行,然后重新开始循环 ;;; 此时模式空间:(2)
  • 在下一个循环中,N 命令将换行符和下一个输入行附加到 模式空间 ;;; 此时模式空间:(2\n3)
  • 以此类推

处理段落等文本块(而不是逐行)的常用技术是使用以下结构

sed '/./{H;$!d} ; x ; s/REGEXP/REPLACEMENT/'
  • /./{H;$!d} 对所有非空行进行操作,并将当前行(在模式空间中)添加到保持空间,在除最后一行之外的所有行中,模式空间都被删除并重新开始循环
  • x 命令将累积的行从保持空间取回模式空间
  • s 命令然后对段落中的所有文本(包括嵌入的换行符)进行操作

分支和流量控制

默认情况下

  • sed 将输入行读入模式缓冲区
  • 然后继续按顺序处理所有命令
  • 没有地址的命令会影响所有行,带地址的命令只影响匹配的行

一些命令可以用作条件或更改默认流控制

  • d 删除(清除)当前模式空间,并重新启动程序循环而不处理其余命令并且不打印模式空间
  • D 删除模式空间的内容直到第一个换行符,并重新启动程序循环而不处理其余命令并且不打印模式空间
  • 地址和正则表达式可用作 if/then 条件
  • b 无条件分支(即:始终跳转到标签,跳过或重复其他命令,而不重新启动新循环):结合地址,分支可以在匹配的行上有条件地执行
  • t 只有在读取最后一个输入行或执行另一个条件分支后,命令成功时,才有条件地分支(即:跳转到标签)
  • T 类似但与 t 命令相反:仅当自读取最后一个输入行以来没有成功的替换时才分支

b, t, T 命令后面可以跟一个 标签(通常是一个字母)

  • 标签定义为冒号后跟一个或多个字母

  • 如果省略了标签,分支命令将重新启动循环

  • 注意分支到标签和重新启动循环之间的区别:

    • 当循环重新启动时,sed 首先打印模式空间的当前内容,然后将下一个输入行读入模式空间
    • 跳转到标签(即使它在程序的开头)不会打印模式空间,也不会读取下一个输入行

构成循环

# 死循环
seq 3 | sed ':x ; bx'

解除死循环,通常由 n 或 N 个命令补充:

  • 两个命令都将下一个输入行读入模式空间,而无需等待循环重新启动
  • 在读取下一个输入行之前,n 打印当前模式空间,然后将其清空,而 N 则在模式空间中添加一个新行和下一输入行
本文转载于网络 如有侵权请联系删除

相关文章

  • 理解证书验证系列——SSH

    速查当该用户发送文件时,用私钥签名,别人用他给的公钥验证签名,可以保证该信息是由他发送的。当该用户接受文件时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他接收到。类似SSH登陆服务端有你的公钥,服务端发给你随机串,你用私钥加密,服务端用公钥解密,解密成功,服务端知道是你,允许登陆。HTTPS中网站把公钥发给你,你拿着公钥加密一个串发给网站,网站解密之后在发给你,你知道网站是真的(只有网站有私钥)。1SSH协议$sshuser@host复制主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录1.1密码口令登录通过密码进行登录,主要流程为:1、客户端连接上服务器之后,服务器把自己的公钥传给客户端2、客户端输入服务器密码通过公钥加密之后传给服务器3、服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录1.2公钥登录公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:1、客户端生成RSA公钥和私钥2、客户端将自己的公钥存放到服务器3、客户端请求连接服务器,服务器将一个随机字符串发送给客户端4、客户端根据自己的私钥加密这个随机字符串

  • springboot+dynamicDataSource动态添加切换数据源

    之前有篇写了切换数据源的方法,那些可以在yml中配置固定的几个数据源进行切换后面需要新需求在数据库实现增删改查数据源然后连。之前配置的就不说了自行查看https://blog.csdn.net/oTianKongLan123/article/details/1037004111.修改初始加载的数据源map,之前传获取的tagetData是直接读取yml中的多个数据源。此时我写了dataTest方法调用主数据直接查询数据库里的某张表并把表中内容加载成一个个数据源放到map中2.此时一开始的时候就会加载数据库中的一张表的数据信息作为数据源。3.但是发现新增数据源或修改数据源时无法操作,需要重启服务,后面发现DynamicDataSource中有一个Map变量用于存储数据源,在调用其构造函数时候有进行加载只要修改了这个map那么新增或者修改的map也可以生效了,完结。发布者:全栈程序员栈长,转转请注明出处:https://javaforall.cn/2210.html原文链接:

  • 一件运维小事的祸根

    这是学习笔记的第2238篇文章读完需要9 分钟速读仅需7分钟今天处理了一个PostgreSQL的复制异常问题,但是限于时间和精力情况,尝试了个把小时,就直接重做了从库,问题迎刃而解,看似是一件小事,其实这是一个祸根。为什么这么说呢,因为这从侧面反映出几个问题:1)这是一套运行了一段时间的环境,在技术兜底方面还需要进一步加强2)基本定位到了问题源头,但是修复时不够有耐心3)没有找到问题的解决方法,下次碰到这类问题肯定还会走一些弯路 4)这种工作模式简单粗暴,没有技术成长对于问题的处理模式,我觉得我们需要沉淀出一些方法论。1)在碰到这类问题时,如果可能对业务产生影响,那么第一要务就是快速恢复业务。 2)对于未知问题的处理方式,最好有预案,尽可能在纸上写写画画,形成一些流程,以免踏入问题的未知地带,导致不可控的结果3)问题处理要快准,快速的处理问题,可能会取舍,规避掉一些其他的问题,那么我们势必需要在处理之前保留一些必要的日志,尽可能收集一些有效的信息,先保留下来。4)问题解决之后,需要开始静下心来分析这个问题更深层面的原因,最后的原因往往是相对简单的,这算是问题背后的问题。 5)通过这些问

  • MMORPG游戏开发实战(一)

    新建目录工程 关于工程的文件夹创建代码注释修改 可以百度,这种代码不需要记忆。一大堆,直接用就可以usingSystem; usingSystem.Collections; usingSystem.IO; usingUnityEngine; usingUnityEditor; publicclassScriptsCreat:UnityEditor.AssetModificationProcessor { publicstaticvoidOnWillCreateAsset(stringpath) { path=path.Replace(".meta",""); if(!path.EndsWith(".cs"))return; stringallText="//========================================================\r\n" +"//描述:\r\n" +"//作者:雷潮\r\n" +"//创建时间:#Cr

  • 【代码审计】任意文件删除漏洞实例

    0x00前言在一个网站中,涉及文件删除操作的函数,如果文件名可控,将可能存在任意文件删除漏洞,该漏洞可让攻击者随意删除服务器上的任意文件。好久没更新代码审计的文章了,通过CSCMS分享几个漏洞实例,水一文。0x01环境搭建CSCMS:http://www.chshcms.com 网站源码版本:Cscms_v4.1正式版(发布日期:2017-06-05) 程序源码下载:https://github.com/chshcms/cscms0x02漏洞实例一漏洞文件位置:\cscms\plugins\sys\admin\Basedb.php第160-177行: publicfunctiondel(){ $dir=$this->input->get_post('id',true); if(empty($dir)){ getjson(L('plub_11')); } $dirs=array(); if(!is_array($dir)){ $dirs[]=$dir; }else{ $dirs=$dir; } foreach($dirsas$dir){

  • 【iOS开发】whose view is not in the window hierarchy

    在做界面跳转的时候,我们经常会用到这两个函数funcdismissViewControllerAnimated(flag:Bool,completion:(()->Void)?) funcpresentViewController(viewControllerToPresent:UIViewController,animatedflag:Bool,completion:(()->Void)?) 有时候先把自己所在的这个页面dismiss掉,再present另外一个页面时,控制台会提示 whoseviewisnotinthewindowhierarchy这个错误信息。解决方法:①如果这两个语句出现按钮点击事件里面这时只要把dismiss这一句注释掉,直接present就可以啦。②而如果这种语句出现在ViewDidLoad方法中那么则应该把语句转移到ViewDidAppear方法中,毕竟你不能对一个只Load完毕,却还没有Appear出来的ViewController要求太多:)部分参考自StackOverFlow中的:whoseviewisnotinthewindowhie

  • Java体系化学习路线图,带走不谢!

    Web应用,最常见的研发语言是Java和PHP。后端服务,最常见的研发语言是Java和C/C++。大数据,最常见的研发语言是Java和Python。可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。有不少朋友问,除了掌握Java语法,还要系统学习哪些Java相关的技术,今天分享一个,互联网Java技术学习路线图。 新 一:常见模式与工具学习Java技术体系,设计模式,流行的框架与组件是必不可少的: 常见的设计模式,编码必备Spring5,做应用必不可少的最新框架MyBatis,玩数据库必不可少的组件 新 二:工程化与工具工欲善其事必先利其器,不管是小白,还是资深开发,玩Java技术体系,选择好的工具,提升开发效率和团队协作效率,是必不可少的: Maven,项目管理Jenkins,持续集成Sonar,代码质量管理Git,版本管理 新三:分布式架构高并发,高可用,海量数据,没有分布式的架构知识肯定是玩不转的: 分布式架构原理分布式架构策略分布式中间件分布式架构实战 新四:微服务架构

  • 中国医疗机器人:玩家不多,但前景可观

    医疗机器人是服务机器人的一种,大致可以分为手术机器人、康复机器人、诊断机器人。根据研究机构GCiS在2016年的一份报道,今年中国医疗机器人市场价值是7.91亿元人民币,较之去年增长34.4%,而到2021年,医疗机器人领域的价值预计至少会增长到22亿元。作为一项新兴产业,智能医疗越来越受到国家和专业人士的看重,在这其中,医疗机器人则占据着极大的比重。在中国,未来市场如此利好之下,当前的情况又如何呢?医疗机器人前景不错,但玩家不多据了解,在2016年获得融资的医疗机器人公司仅有几家,包括获得华医资本(原光合资本)投资的一家研发胶囊机器人公司、推出新一代Remebot神经外科手术机器人的北京柏惠维康科技、推出全球首部实用化人工智能导盲机器人的达闼科技等等。除了这些公司之外,在医疗机器人圈内,我国还有一些机器人公司在努力钻研。比如瞄准了康复机器人的金明精机、新松机器人等,钻研手术机器人的哈尔滨思哲睿、天津妙手机器人等等,以及专注于外骨骼机器人的尖叫科技、楚天科技等。按照外媒的说法,我国医疗机器人市场正在悄然崛起,然而,在玩家不多的情况下,我国医疗机器人的研究还有待发展。由此,虽然我国医疗机

  • 利用MailChimp发送邮件加调取API开发落地页分享

    基于平时爱好关注各类技术社区及众多技术微信号,经常看到很多有用有意思的内容,朋友总是让分享出来,索性就抽空做了个邮件订阅页面目前每周发一次,内容偏向于前端但不限于此范围。邮件推送使用到的服务商是功能强大的MailChimp,良好的口碑以及一定量的免费额度,加上便捷的设计模版,并且推送后还有数据可以查询,非常适合初期订阅用户量不大的情况下使用。(MailChimp免费阶段支持每月最多2,000位订阅者和12,000封电子邮件,具体收费价格可参考https://mailchimp.com/pricing/)下面分享下具体使用方法:登陆官网注册:https://mailchimp.com/,点击「SignUpFree」进行账号注册,设置完成后点击「GetStarted!」即可。(注意:注册时密码需要包含一大写、一小写、一个特殊符号、一个数字、至少8位)创建邮件模版我通常习惯先设置邮件模版内容,点击左上方「Templates」进入设置邮件模版页面,点击「GreateTemplate」创建模版,根据需要可对现成的模版进行修改调整,模版效果随时可预览检查,全部完成后可以进行测试发送。创建发送列表左

  • 数据结构04 链表的面试题

    这篇文章包含的链表面试题如下:1、从尾到头打印单向链表2、查找单向链表中的倒数第k个节点3、反转一个单向链表【出现频率较高】4、合并两个有序的单向链表,合并之后的链表依然有序【出现频率较高】5、找出两个单向链表相交的第一个公共节点前期代码准备:下面这两个类的详细解析可以参考我的上一篇文章:数据结构3线性表之链表节点类:Node.java/** *节点类 */ publicclassNode{ Objectelement;//数据域 Nodenext;//地址域 //节点的构造方法 publicNode(Objectelement,Nodenext){ this.element=element; this.next=next; } //GettetandSetter publicNodegetNext(){ returnthis.next; } publicvoidsetNext(Nodenext){ this.next=next; } publicObjectgetElement(){ returnthis.element; } publicvoidsetElement(Ob

  • 弱智错误第二篇:我是如何毁掉一个网游公司的

    原文出处:mkrecny译文出处:外刊IT评论【导读】:前几天的一篇文章《为什么HackerNews昨晚一夜宕机》讲的也是一个低级错误,但那个犯错误的人是老板自己,他在问题未解决前仍然能回家睡觉,但如果你不是老板,而是一个普通员工,而且犯了一个无法饶恕的愚蠢错误,那你知道你的下场吗——死的很惨。2010年7月份,我22岁,在加州的一家网游公司工作。我刚毕业,这是我的第一份真正意义上的工作。我有了工资收入,有了自己的宿舍。我感觉长大了,头一次有这样的感觉。有两个“工程师”在为公司的旗舰产品——一款RPG游戏——写代码,我是其中之一。我在大学里学的是哲学,这意味着,虽然我知道如何去思考、解决一个问题,但我对最佳实践方法、设计模式等方面的知识很缺乏。我完全倚仗基本的LAMP相关知识,对它们付出了极大的热情。这款游戏的设计者(我们的老大)经常从暴雪公司出品的风靡世界的游戏“魔兽世界”中吸取灵感。在当时,魔兽世界里的“Raids”玩法在玩家中激起了前所未有的兴奋和热情。这个东西是我们特别想在我们的游戏中复制的功能。我被分派去实现我们的游戏中的Raids。同事山姆被大量的重构工作纠缠住,于是我就幸

  • mysql(1)—— 详解一条sql语句的执行过程

      SQL是一套标准,全称结构化查询语言,是用来完成和数据库之间的通信的编程语言,SQL语言是脚本语言,直接运行在数据库上。同时,SQL语句与数据在数据库上的存储方式无关,只是不同的数据库对于同一条SQL语句的底层实现不同罢了,但结果相同。这有点类似于java中接口的作用,一个接口可以有不同的实现类,不同的实现类对于接口中方法的实现方式可以不同,结果可以相同。这里SQL语言的作用就类似于java中的接口,数据库就类似于java中接口的实现类,SQL语句就类似于java接口中的方法。不同的是java中接口的不同实现类对于接口中方法的执行结果可以相同,也可以不同,而不同的数据库对于同一条SQL语句的执行是相同的。(这里只是做一个类比,方便我们理解)   一般情况下,大部分SQL语句在不同的数据库上是通用的,但我们知道每个数据库都有自己独有的特性,像在MySql数据库中,可以使用substr(取字符串),trim(去空格),ifnull(空值处理函数),还可以使用limit语句对数据库表进行截取,但这些都是oracle数据库没有的。(类比接口实现类中,实现类独有的方法,而接口中没有的)   

  • [置顶] k8s,docker,微服务,监控

    综合 第一篇:k8s服务A内部调用服务B的方式 grpc 第一篇:grpc,protobuf安装 第二篇:grpc签发证书 第三篇:golang-grpc 第四篇:python-grpc 第五篇:grpc流模式-go实现 docker 第一篇:docker安装 第二篇:docker使用 第三篇:Dockerfile编写 第四篇:docker镜像 第五篇:docker容器 第六篇:docker四种网络模式 第七篇:docker-compose容器编排工具 k8s 第一篇:k8s-架构图 第二篇:k8s-常用命令 第三篇:k8s-kubeadm安装k8s 第四篇:k8s-二进制安装k8s 第五篇:k8s-rancher安装k8s 第六篇:k8s-pod生命周期,重启策略,配置清单等 第七篇:k8s-名称空间namespace,标签labels,命名规范 第八篇:k8s-控制器deployment/DaemonSet/StatufluSet;弹性扩容,更新镜像,回滚 第九篇:k8s-service服务,四种类型(CluserIP,NodePort,LoadBalancer,E

  • TimSort学习资料

    深入理解timsort算法(1):自适应归并排序 如何找出Timsort算法和玉兔月球车中的Bug? JavaTimSort算法源码笔记 Timsort  https://en.wikipedia.org/wiki/Timsort  Timsort原理介绍   下面需要正确上网 timsort算是比较复杂的排序算法了(看懂了就不复杂了),但用处很广的一种排序算法。以下介绍一些学习timsort的资料(按我个人的学习顺序)1,https://vimeo.com/146478455概要的讲解timsort的实现以及timsort的bugs,因为是视频,所以相比论文我觉得更快看得懂,没字幕,听不懂怎么办,没事,演讲者有一个文章重新梳理视频内容ProvingthatAndroid’s,Java’sandPython’ssortingalgorithmisbroken(andshowinghowtofixit)2,Timpeters自己写的论文https://svn.python.org/projects/python/trunk/Objects/listsort.

  • 20180925-6 四则运算试题生成

    作业要求参照[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2148] 要求1参考《构建之法》第4章两人合作,结对编程上述功能,要求每人发布随笔1篇(代码是共同完成的,博客是分别完成的)。(1)给出每个功能的重点、难点、编程收获。(2)给出结对编程的体会,以及(3)至少5项在编码、争论、复审等活动中花费时间较长,给你较大收获的事件。(10分) 功能一:重点是随机数和随机符号的实现。在进行此功能的实现时,遇到了两种错误的情况,一种是每次生成的四个随机数和三个操作符号都是一样的,比如“4+4+4+4=”这种,还有一种就是第一次运行生成的20个算式没问题,但是第二次运行会生成和第一次一模一样的算式。后来我们用以时间作为种子,完成随机数和操作符的实现,学会了如何正确产生随机数。 intnum[8]={0}; charsign[4]={}; for(inti=0;i<4;i++) { sign[i]=RandomSign(); } for(inti=0;i<8;i++) { num[i]=rand()%9+1; }复制

  • [选择客栈]

    P1311 [选择客栈] 题目大意:选择同色调的不同客栈且满足之间至少存在一间客栈的最低消费≤p的方案数 做法:(层层递进嘛) 1:\(60\)分的做法:直接暴力枚举\(i,j\)两个客栈判断是不是相同色调的不同客栈,然后从\(i\)枚举到\(j\)寻找是不是其中一间客栈的最低消费小于\(p\),\(ans++,break\) #include<cstdio> #include<iostream> #include<algorithm> usingnamespacestd; constintmaxn=200005; intn,k,p,ans; intcnt[55],val[maxn],color[maxn]; intmain() { scanf("%d%d%d",&n,&k,&p); for(inti=1;i<=n;i++) scanf("%d%d",&color[i],&val[i]); for(inti=1;i<n;i++) for(intj=i+1;j<=n;j++)

  • 复选框全选/全部选

    复选框全选/全部选 <!DOCTYPEhtml> <html> <head> <metacharset="utf-8"/> <title></title> <scripttype="text/javascript"> window.onload=function(){ /* 全选按钮点击按钮以后,四个多选框全部被选中 */ //为idcheckedAllBtn的按钮绑定一个单击相应函数 varitem=document.getElementsByName('items'); varcheckedAllBtn=document.getElementById('checkedAllBtn'); checkedAllBtn.onclick=function(){ //获取四个多选框items //遍历items for(vari=0;i<item.length;i++){

  • 【工作环境】公司主域控硬盘损坏后的维修步骤

      一般企业如果使用了域控管理公司电脑账户的话,域控服务器至少两台,我所在的公司整个楼层200人左右,员工入离职频繁,我自己搭建了域控管理电脑账户,方便统一管理,当然我配置了两个域控(主域控和额外域控)。   有一天早上,公司上不了网,我迅速判断,发现主域控服务器瘫痪导致dns无法解析,我马上修改了dhcp服务器的默认dns规则到额外域控制器,让公司网络先恢复。   然后,将主域控从机房搬出来,u盘pe进入系统检测硬件,发现是固态硬盘坏掉了,导致系统无法开机,然后我就想到了最笨的解决办法:     1、额外域控制器提升权限成为主域控。     2、新建额外域控制器。   (提醒:额外域控制器提升权限前,一定要将本地管理员授予很多特殊权限,具体权限如下图)          在额外域控制器提权,获取5大角色控制器权限,具体步骤如下:     1、管理员运行windowspowershell,运行命令:netdomqueryfsmo命令查询5大角色控制器权限,让额外域控制器BDC获取这些权限。          2、输入命令:ntdsutil  查看帮助信息     

  • youtube-dl,最强的视频下载神器

    youtube-dl已经成为GitHub上最受欢迎的项目之一,拥有110k星,人气介于Node.js及Kubernetes之间。 2006发布,一开始只能从YouTube下载视频和音频,后来经过创作人员的不断完善,下载支持的站点达到了1000多个,成为最受欢迎的下载神器。   从国外的YouTube、BBC、CBS、Twitter、Facebook上的音视频下载,再到国内的爱奇艺、腾讯视频、芒果TV、优酷视频、B站、酷我音乐、网易音乐……几乎涵盖了全球各大音视频网站。   1linux安装 sudocurl-Lhttps://yt-dl.org/downloads/latest/youtube-dl-o/usr/local/bin/youtube-dl sudochmoda+rx/usr/local/bin/youtube-dl   2win https://github.com/ytdl-org/youtube-dl/releases   开源地址:https://github.com/ytdl-org/youtube-dl  

  • git commit 提交说明

    Git每次提交代码,都要写Commitmessage(提交说明),否则就不允许提交。一般来说,commitmessage应该清晰明了,说明本次提交的目的。 用于说明commit的类别,只允许使用下面7个标识。 feat:新功能(feature) fix:修补bug docs:文档(documentation) style:格式(不影响代码运行的变动) refactor:重构(即不是新增功能,也不是修改bug的代码变动) test:增加测试 chore:构建过程或辅助工具的变动 每天学习一点点,每天进步一点点。

  • Hadoop入门学习整理(二)

    2020-04-15 在上一篇文章中介绍了Linux虚拟机的安装,Hadoop的安装和配置,这里接着上一篇的内容,讲Hadoop的简要介绍和简单使用,以及HBase的安装和配置。   1、首先要了解Hadoop的目录: (1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本 (2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件 (3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能) (4)sbin目录:存放启动或停止Hadoop相关服务的脚本 (5)share目录:存放Hadoop的依赖jar包、文档、和官方案例   2、了解Hadoop的运行模式: Hadoop包括3种安装模式(1)单机模式。只在一台机器上运行,存储采用本地文件系统,没有采用分布式文件系统HDFS(2)伪分布式模式。存储采用分布式文件系统HDFS,但是,HDFS的名称节点和数据节点都在同一台机器上(3)分布式模式。存储采用分布式文件系统HDFS,而且,HDFS的名称节点和数据节点位于不同机器上。  在Linux虚拟机中安装完H

相关推荐

推荐阅读