首页
学习
活动
专区
圈层
工具
发布

shell(一)

当然翻译不能是单向的,它也会将操作系统指令处理后解释给应用程序,这才是一个好翻译嘛~ 说起shell大家首先想到的肯定是"黑窗口",其实命令行式shell只是shell的一种。...(此方法对所有的用户有效) 修改完后,你会发现一个问题,就是当前终端为什么不能看到全局变量,因为你需要加载一下,让当前环境中有你定义的全局变量。...bash test_shell.sh 1 2 3 name 执行结果: 我脚本的名称是:test_shell.sh 我脚本执行的进程号的是:19755 当前脚本传入的参数数量是: 4 第一个位置的参数是...格式: sed [参数] '[动作]' [文件名] 参数: -i:表示对文件进行编辑(如果不添加这个参数,修改结果在终端输出,但是不会修改原文件) 匹配条件:数字行号或者关键字匹配 关键字匹配格式...-size n[c]:查找文件长度为n块的文件,带有c时表示文件长度以字节计。 -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

4K50

Linux 常用命令

在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。...-e :直接在命令列模式上进行 sed 的动作编辑; -f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作; -r :sed 的动作支持的是延伸型正规表示法的语法...] 』 function: a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!...d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p :列印,亦即将某个选择的数据印出。...切片 a=abcdefg echo ${a:0:4} out: abcd Cut命令 cut命令用来显示行中的指定部分,删除文件中指定字段。

2.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Shell三大利器之sed

    sed (stream editor)流编辑器也是linux中的一条命令,在shell中经常需要用到的非交互式修改文件内容的命令。sed处理文本是按行处理,也就是读一行处理一行。...sed的常用参数 -n 屏蔽默认输出;如果不加-n选项会全部输出文本满足条件的行再重复输出 -r 如果使用扩展正则,则需要添加-r选项,默认不支持扩展正则,只支持标准正则 -i 直接修改源文件;不加-i...只会在屏幕临时输出不会修改源文件,一般测试过命令无误才会在脚本中使用-i选项 sed常用命令 a 在当前行后添加一行或多行。...多行时除最后一行外,每行末尾需用“\”续行 b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。 c 用此符号后的新文本替换当前行中的文本。...删除1.txt中4-7行开头加上# 也就是批量添加注释 4,7s/^#an/an/ sed '4,7s/^#an/an/' 1.txt 删除1.txt中4-7行以#an开头的行去掉#

    2.5K00

    《Linux命令行与shell脚本编程大全》第十九章 初识sed和gawk

    sed编辑器会执行下列操作: 1)一次从输入中读取一行数据 2)根据所提供的编辑命令匹配数据 3)按照命令修改流中的数据 4)将新的数据输出到STDOUT sed将所有命令与一行数据匹配完毕后,就读取下一行重复这个过程...中指定的命令添加到已有的命令中 -f file       | 在处理输入时,将file中指定的命令添加到已有的命令中 -n            | 不产生命令输出,使用printf命令来完成输出 一般是单个命令...19.2.4 插入和附加文本 sed编辑器允许向数据流插入和附加文本行 插入(insert):命令(i)会在指定行前增加一个新行 附加(append):命令(a)会在指定行后增加一个新行 它们不能在单个命令行上使用.../19zhang$ 19.2.5 修改行 修改(change)允许修改数据流中整行的内容,它跟插入附加的工作机制一样,必须在sed命令中单独指定新行 $sed ‘2c\This is change...例子: $sed ‘3r read.txt’ data.txt  // 将read.txt的数据插入到data.txt的第三行中 $sed ‘$r read.txt’ data.txt   // 在数据流的末尾添加文本

    2.5K50

    Linux进阶命令和Shell编程

    1.高级文本命令——sed1.1sed简介 sed全称是:Stream EDitor,即流编辑器,是一个很好的文本处理工具,本身是一个管道命令,处理时,把当前处理的行存储在临时缓冲区中,接着用sed命令处理缓冲区中的内容...在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。...1.3sed函数 a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)d :删除,因为是删除啊,所以 d 后面通常不接任何内容i :插入, i 的后面可以接字串,而这些字串会在新的一行出现...wc语法: 示例: 3.3sort 命令 sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。...也可以把这个命令编写在shell脚本中,我这里用read.sh来写 测试时: 4.6 if语句 首先从控制台输入一个用户名,如果谁的等于root,或者等于magic,欢迎,如果都不是,提示出错信息。

    2.1K80

    Linux基础——正则表达式

    在/etc/passwd的第二行前增加“XXXXX”字样的新行 ? 如果要同时新增多行,则每行之间要用反斜杠\来进行新行的添加 ?...B、使用sed脚本文件,格式为: sed [选项] -f sed脚本文件 输入文件 C、要使用第一行具有sed命令解释器的sed脚本文件,其格式为: sed脚本文件 [选项] 输入文件 不管是使用shell...创建 sed 脚本文件append.sed,通过 sed 脚本向 test.txt 中新增内容,脚本内容如下: ?...第三、四行是附加操作要加入到拷贝的实际文本。 这里只举例通过sed脚本增加新行的操作,有关sed的其他操作大家要会举一反三。 五、awk 命令: awk 也是一个数据处理工具!...例3:如果只是显示/etc/passwd文件中的UID大于500的用户名和登录shell,而账户与 shell之间以逗号分割,而且在所有行添加列名 name,shell,在最后一行添加"blue,/bin

    5.8K30

    Linux持久化实操

    centos系列下还存在一种在线向initrd内部更新驱动模块的方法,可在/etc/initramfs-tools/modules文件中添加相应模块的模块名及其参数,然后用update-initramfs-u...hash openssl passwd -1 -salt saltvalue password #再使用sed命令在最后一行的前一行增加一个新用户 sed -i '$ i\username:md5.../etc/bash.bashrc或/etc/bashrc:该文件包含系统级别的 shell 脚本,每次打开新的 shell 环境时执行。...~/.bash_aliases:该文件包含用户级别的 shell 别名,每次打开新的 shell 环境时执行。 ~/.profile :该文件包含个人 shell 脚本,在用户登录时执行。...~/.bash_profile :该文件包含个人 shell 脚本,在用户登录时执行。 ~/.bashrc :该文件包含个人 shell 脚本,每次打开新的 shell 环境时执行。

    1.2K30

    shell脚本扩展「建议收藏」

    大家好,又见面了,我是全栈君。 防伪码:要做到无可替代,就要与众不同。...的第二行前增加“XXXXX”字样的新行 如果要同时新增多行,则每行之间要用反斜杠\来进行新行的添加 4、取代行:c命令 c的后面可以接字符串,这些字符串可以取代n1,n2之间的行 5、打印:p命令...B、使用sed脚本文件,格式为: sed [选项] -f sed脚本文件 输入文件 C、要使用第一行具有sed命令解释器的sed脚本文件,其格式为: sed脚本文件 [选项] 输入文件 不管是使用shell...第三、四行是附加操作要加入到拷贝的实际文本。 这里只举例通过sed脚本增加新行的操作,有关sed的其他操作大家要会举一反三。 五、awk命令: awk也是一个数据处理工具!...例3:如果只是显示/etc/passwd文件中的UID大于500的用户名和登录shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加”blue,/bin/

    6.7K20

    运维面试题(每日一题)

    大家好,又见面了,我是你们的朋友全栈君。 每日一题 第一周 1、添加路由 2、如何防止Linux命令行或脚本里MySQL登录密码泄露?...有几种工作模式及企业应用场景 第十四周 1.两个文件,把第一个文件中的第2、3行内容添加到第二个文件的第3行后面 2.脚本直接执行没有问题,在定时任务中有问题,什么原因?...❤shell知识点:shell脚本中字符串截取 第十七周 第十八周 第十九周 第一周 1、添加路由 默认生产环境中,三台服务器均可满足访问外网需求;但最终目标是完成服务器01与服务器03之间的不同网段间通讯...-n2表示以回车为换行符后,我要每行显示两列,也就是两行。...新的日志会打印在access_log.bak 中,因为apache 启动时会找access_log 文件,随时准备向文件中加入日志信息,虽然此时文件被改名,但是由于服务正在运行,因为它的inode 节点的位置没有变

    5.6K22

    Linux:使用sed命令替换文件内容实操及各种报错问题解决

    全部需要公司运维人员帮忙操作,且每次新增都需要人工重复操作 现在的流程: 1.提前一次性配置好环境变量文件B中的必要参数 2.后续就交给程序来操作 3.根据页面输入的信息替换shell模版C内容;...因为可以轻易将数据管道输出到 sed,所以,将 sed 用作强大的 Shell 脚本中长而复杂的管道很容易。 sed 主要是用来将数据进行选取、替换、删除、新増的命令。...和 awk 命令的 -f 选项非常类似; r:在 sed 中支持扩展正则表达式; i:直接修改读取的文件内容,而不是由屏幕输出; 常用命令: a \:新增,在当前行后添加一行或多行。...报错-sed throws ‘bad flag in substitute command’ 由于我这个问题无法复现了,也忘了当时具体的情况了,这里就直接放我当时解决参考的链接了 解决方法 sed 在替代命令中抛出...Sed命令中含有转义字符的问题 在sed命令中有许多的字符都被转义,比如\ , $,^,单双引号还有点号等等,因此使用sed命令进行字符串的匹配和修改的时候,字符串中如果含有转义字符,很多情况下不能直接用字符本身表示

    1.5K10

    shell脚本对编码和行尾符敏感吗

    问: 我正在macOS上制作一个NW.js应用程序,并想通过双击图标在开发模式下运行该应用程序。在第一步中,我试图使我的shell脚本正常工作。...在我的编辑器(VS Code)中,我尝试将\r\n替换为\n(以防\r产生问题),但它没有改变什么。 它似乎没有找到文件夹(有或没有dirname指令),或者可能它不知道cd命令?...真正让我感到奇怪的是,它仍然运行应用程序(如果我手动执行npm install)…… 由于无法正常工作,并且怀疑文件本身有什么奇怪的地方,我直接在Mac上创建了一个新的文件,这次使用了vim。...Bash脚本对行结束很敏感,无论是在脚本本身还是在它处理的数据中。它们应该有Unix风格的行结束符,即每行以换行符结束(ASCII中的十进制10,十六进制0A)。...: 用Bash变量进行sed替换 带有-i选项的sed命令在Linux上执行成功,但在MacOS上失败 在shell程序里如何从文件中获取第n行

    61920

    LinuxShell命令sed

    使用两个单引号时,script 中使用 / 分隔每个字段,字段均为纯字符串,不能使用 Shell 下的变量;使用两个双引号时,script 中使用 | 分隔每个字段,字段中可以使用 Shell 下的变量...-f script-file、--file=script-file :将 script-file 中的内容添加到将要执行的命令中(一条命令占一行,无需分号 ;)。...{} :组合多条 sed 脚本命令(多条脚本命令用 ; 分隔)。 a\ text :在指定行后追加内容为 text 的新行。 i\ text :在指定行前追加内容为 text 的新行。...(可以包含转义字符),不能使用 Shell 下的变量(即不会解释 Shell 下的变量)。...举例 打印 XXX 文件中第 5 行及其后的所有行: sed -n '5,$p' XXX 将 XXX 文件数据中的第 2 行删除后写入 YYY 文件: sed -n '2d; w YYY' XXX 将

    1.5K30

    shell脚本–sed的用法

    大家好,又见面了,我是你们的朋友全栈君。 sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。...=:用来打印被匹配的行的行号 n:读取下一行,遇到n时会自动跳入下一行 r,w:读和写编辑命令,r用于将内容读入文件,w用于将匹配内容写入到文件 2.sed命令实例: 示例1:向文件中添加或插入行 sed...‘3ahello’ 1.txt #向第三行后面添加hello,3表示行号 sed ‘/123/ahello’ 1.txt #向内容123后面添加hello,如果文件中有多行包括123,则每一行后面都会添加...中 sed -n ‘/xyz/,+2w 2.txt’ 1.txt #将1.txt中从匹配xyz的行及其后2行的内容,写入到2.txt中 示例9:sed 在shell脚本中的使用...#将匹配文件重命名为:文件名+新的后缀名   fi done 示例4:使用sed匹配文件中的IP地址 sed -nr ‘/([0-9]{1,3}\.){3}([0-9]{1,3})/p’ 1.txt

    4.6K20

    查看博客园积分与排名趋势图的工具

    问题的提出 在博客园写文章有一段时间了,除了自己有一些新的发现想与别人分享外,推动我写文章的最大动力就是看博客园排名不断增长啦!...7p 这句话后半段翻译一下就是,取看到 liScore 关键字所在行(含)的后面 6 行,积分与排名的值分别位于第 3 行、第 7 行,使用 sed 过滤这两行,就成这样了 4709 113450 完整的脚本如下...添加日期列作为横轴 (line 3,13) 将当天信息作为一行追加到 score.txt 文件 (line 11-13) 添加当天信息前判断是否已经记录过,如果是则跳过,防止重复添加 (line 4-...命令都支持的,例如上面说到的 grep、sed、git,并且可以直接跑 shell 脚本。...如果是这样,在 windows 上的定时任务非‘任务计划’莫属了,下面就是我创建的任务截图 我设置在了每天中午 12:00 运行,下面这个文件是可以直接导入的那种 <?

    1.5K30

    《Linux命令行与shell脚本编程大全》第二十一章 sed进阶

    合并文本行(多行版本的next) 单行next命令会将数据流中的下一文本行移动到sed编辑器的工作空间(称为模式空间) 多行版本的next命令(N)会将下一行添加到模式空间中已有的文本后。...:~/shell/21zhang$ 4)帖子下面的评论: 不管是n还是N,都不能改变sed每次只处理一行的规定。...上述命令会先查找空白行,然后用N命令将下一文本添加到模式空间。 假如新的模式空间中有header,那么删除模式空间中的第一行。...方法就是先删除空行,再加空行 $sed ‘/^$/d; $!G’ fact.sh 21.7.3 给文件中的行编号(等号=) 用=号: sed ‘=’ data2.txt 这样的结果很丑。...21.7.5 删除行 1、删除连续的空白行 无论文件的数据行之间有多少个空白行,在输出中只会保留一个空白行。 关键在于创建包含一个非空白行和一个空白行的区间。如果遇到了这个区间,就不删除。

    2.1K90

    Linux命令篇(二):文档编辑部分

    -v:反向查找,只打印不匹配的行。 -n:显示匹配行的行号。 -r:递归查找子目录中的文件。 -l:只打印匹配的文件名。 -c:只打印匹配的行数。.../目录下查找文件中带有linux字符串的文件,并打印字符串所在行的内容 grep -r linux /homa/sk/test/ 2、rgrep 命令 rgrep命令等同于 grep -r 命令,主要是用于递归查找文件里符合条件的字符串...python linux shell script 在test.txt文件的第三行后面插入一行“this is c++ ” sed -e 3a\this is c++ test.txt 使用如上...script 关键字的行 nl test.txt | sed -n '/script/p' 2 java script 6 shell script 在test.txt文件中找到 script...scriss 6 shell scriss # 这里的q是退出命令的意思 数据的查找与替换,sed的查找与替换命令与vi类似,格式如下: sed 's/要被取代的字串/新的字串/g' # s是查找与替换意思

    74510

    linux中sed命令总结

    参数 文件:指定待处理的文本文件列表。 sed命令 a\ # 在当前行下面插入文本。 i\ # 在当前行上面插入文本。 c\ # 把选定的行改为新的文本。 d # 删除,删除选择的行。...G # 获得内存缓冲区的内容,并追加到当前模板块文本的后面。 l # 列表不能打印字符的清单。 n # 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。...b lable # 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。 r file # 从file中读行。...Sed对于脚本中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行为注释行,且不能跨行。.../c/sed.html 相关文章 Shell三大利器之sed linux之sed使用技巧

    4.3K20

    一篇精辟的Linux必知必会​,推荐收藏

    另外推荐两个有关linux的材料,我自己本身也在看的: 《Shell从入门到精通》,清华大学出版社。 《鸟哥的Linux私房菜基础学习篇》,人民邮电出版社。...mv mv是指move,移动,可以理解为windows的剪切粘贴,后面有两个必要参数(当然两个必要参数前还需要有一个可选参数,例如 -i和 -f),一个是你要移动的文件,另一个是移动到的新的位置(如果是文件夹那就会放文件夹里面...grep grep是遍历文件中带有特定字段的内容,例如我要找带有“深圳”的数据,这可以帮我们过滤信息,我在读取日志的时候很喜欢用,日志的内容非常繁杂,我根据日志中打的标签,可以快速选择我需要关注的日志信息...sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串 表示在名为 testfile的第四行后添加一行,内容是newline。...另外还有几个很重要的且不能不提的东西,放在这里。大家根据我给的一些资源整理阅读学习。

    98020

    【Linux】《how linux work》第十一章 Shell 脚本简介

    为什么?答案可能就在你当前的目录中。 如果该目录包含名为r.input和r.output的文件,那么shell会将r....这些特殊变量与2.8环境和shell变量中描述的其他shell变量类似,只是你不能更改某些变量的值。...注意:阅读接下来的几节后,你将明白为什么编写的shell脚本会积累许多特殊字符。 如果你试图理解一个shell脚本,并且遇到一行看起来完全无法理解的代码,请逐个部分进行分析。...to the end of the operation, like this: 如果想要替换/etc/passwd文件中的所有冒号,请在操作结尾处添加g修饰符,像这样: $ sed 's/:/%/g'...下面的示例使用 tar 将 orig 中的整个目录树存档,然后将存档解压到新目录 target 中,这实际上是复制 orig 中的文件和文件夹(这很有用,因为它保留了所有权和权限,而且通常比使用 cp

    55510

    一劳永逸!Linux基础命令和工具详解,让你轻松应对各种任务!

    -r递归搜索文件目录-Cn打印匹配行的前后n行(1)在指定文件查找,查找login关键字:grepbattery./shell/battery.sh(2)在多个文件搜索的时候,可以使用通配符。.../shell/battery.sh(6)找出文件中包含login的行,打印出行号,并显示前后3行。...-inameFILE_NAME#忽略文件名称大小写find/etc-maxdepth1-namepasswd##查找/etc/下名称中带有passwd的文件,查找一层find/mnt-size20K##...-mindepth2-name.conf##查找/etc/下名称中带有.conf的文件,且只查找第二层find/mnt-typed##按type查找/mnt中目录find/mnt-typef##按type...sed命令是用来批量修改文本内容的,比如批量替换配置中的某个ip。sed命令在处理时,会先读取一行,把当前处理的行存储在临时缓冲区中,处理完缓冲区中的内容后,打印到屏幕上。

    88202
    领券