首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果mac上不存在行,则使用sed在文件末尾追加行的Bash脚本

在mac上,如果文件中不存在某行,可以使用sed命令来在文件末尾追加行的Bash脚本。

代码语言:txt
复制
#!/bin/bash

# 检查文件中是否存在指定行
if ! grep -q "行" 文件名; then
    # 使用sed命令在文件末尾追加行
    sed -i '' '$a\
    行内容' 文件名
    echo "行已追加到文件末尾"
else
    echo "文件中已存在行"
fi

这个脚本首先使用grep命令来检查文件中是否存在指定的行。如果不存在,则使用sed命令在文件末尾追加行。sed命令中的$a\表示在末尾追加行,后面跟着行的内容。文件名是待操作的文件名。

这个脚本可以通过命令行运行,将文件名和行内容替换成实际的值即可。注意,在mac上使用sed命令时需要使用-i ''选项来进行原地编辑。

推荐的腾讯云相关产品:无

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

sed 保持空间命令之 g、G 执行逻辑

保持空间:保持空间是另外一个缓冲区,用来存放临时数据,以便在后续处理中使用。与模式空间不同,保持空间内容不会在循环中被删除。不能在保持空间执行普通 sed 命令。...脚本中执行: 创建内容如下脚本文件 g.sed #!...下面的命令同一行打印以冒号分割管理者名称和职位。 #sed -n -e '/Manager/!...对于真正逐行反向输出,应该考虑使用 tac 或者编写一个小脚本(如使用 awk、perl 或 bash)来实现。...这个 awk 脚本文件每一行存储在数组 lines 中,然后文件处理完成后,从数组末尾开始向前遍历并打印每一行,从而实现反向输出效果。

7110

Linux系统开发: 学习linux三剑客(awk、sed、grep)()

,导致如果是写一些脚本就会很不方便,这个时候就需要sed和awk这样工具来实现。...接着处理下一行,这样不断重复,直到文件末尾文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件反复操作;编写转换程序等。...前面可加数字,指定打印第几行 P(大写) 打印模板块第一行。 q 退出Sed。 b lable 分支到脚本中带有标记地方,如果分支不存分支到脚本末尾。 r file 从file中读行。...x\{m,n\} 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0行 3.7 脚本地址定界 / sed中作为定界符使用,也可以使用任意定界符:| / 定界符出现在样式内部时.../前没有地址定界则可以不加{},如果必须加上 $ sed -n '1,10 {/sh$/p}' 123.txt #显示123.txt内第1到第10行中以结尾行 显示查找内容所有行

9.2K21

linux这几个运维命令你真的需要熟记

虽然什么都可以百度,谷歌查但是如果你能在工作中很流畅敲出来并解决问题,那么工作效率肯定会很高。 查找目录下所有以. zip 结尾文件移动到指定目录 find ....写一个脚本查找最后创建时间是 3 天前,后缀是 *.log 文件并删除。 find ....-size +100k -exec mv {} /tmp; 如何判断某个目录是否存在,不存新建,存在打印信息。 if [ !...//g' test.txt 在行首添加一个a字符: sed 's/^/a/g' test.txt 在行尾添加一个a字符: sed 's/$/a/' tets.txt 特定行后添加一个...z字符:sed '/rumen/az' test.txt 在行前加入一个c字符: sed '/rumenz/ic' test.txt sed 另外一个用法找到当前行,然后修改该行后面的参数 sed

36310

Linux这17个操作技巧是每个运维工程师应知必会吧?

/backup/ ; ❝注解:find –name 主要用于查找某个文件名字,-exec 、xargs 可以用来承接前面的结果,然后将要执行动作,一般跟 find 在一起用很多,find 使用我们可以延伸...//g’ test.txt 在行首添加一个a字符: sed’s/^/a/g’ test.txt 在行尾添加一个a字符: sed’s/$/a/‘ tets.txt 特定行后添加一个c...4、如何判断某个目录是否存在,不存新建,存在打印信息。 if [!...(2)、if条件判断该大小是否大于90,如果大于90发送邮件报警 while sleep 5m do for i in `df -h |sed -n '//$/p' |awk '{print $5...20 13、写一个脚本查找最后创建时间是3天前,后缀是*.log 文件并删除。

30550

18个 实用 Linux 运维命令及知识

/backup/ ; 注解:find –name 主要用于查找某个文件名字,-exec 、xargs可以用来承接前面的结果,然后将要执行动作,一般跟find在一起用很多,find使用我们可以延伸-mtime...//g' test.txt 在行首添加一个a字符: sed's/^/a/g' test.txt 在行尾添加一个a字符: sed's/$/a/' tets.txt 特定行后添加一个c字符:...4、如何判断某个目录是否存在,不存新建,存在打印信息。 if [!...(2)、if条件判断该大小是否大于90,如果大于90发送邮件报警 while sleep 5m do for i in `df -h |sed -n '//$/p' |awk '{print $5}'...NR==1′ 这个才是真正打印最大最小值:sed ‘s/ / /g’ a.txt |sort -nr|sed -n ’1p;$p’ 9、使用snmpd抓取版本为v2cacti数据方式: snmpwalk

1.5K30

Shell三大利器之sed

sed常用参数 -n 屏蔽默认输出;如果不加-n选项会全部输出文本满足条件行再重复输出 -r 如果使用扩展正则,则需要添加-r选项,默认不支持扩展正则,只支持标准正则 -i 直接修改源文件;不加-i...只会在屏幕临时输出不会修改源文件,一般测试过命令无误才会在脚本使用-i选项 sed常用命令 a 在当前行后添加一行或多行。...多行时除最后一行外,每行末尾需用“\”续行 b lable 分支到脚本中带有标记地方,如果分支不存分支到脚本末尾。 c 用此符号后新文本替换当前行中文本。...g 在行内进行全局替换 w 写并追加模板块到file末尾。将所选行写入文件 W 写并追加模板块第一行到file末尾。....txt 1.txt第二行前面插入123 正则 i sed '/^[0-9]/i123' 1.txt 1.txt中所有数字开头行前面插入123 a 在行后插入

2.1K00

shell编程下 特殊变量、test 判断、循环、脚本排错

查询一条命令是否执行成功,就能够判断是否存在这个文件或目录. 2.2.1 判断一个文件是否存在 -f 为判断对象是文件,0为存在,1为不存在 [root@znix ~]# test -f /oldboy...root@znix ~]# ll -d /root/oldboydir/1 drwxr-xr-x 2 root root 4096 Sep 20 10:41 /root/oldboydir/1 第3章 判断脚本使用...3.1.1 中文示例(更好理解) 如果 [ 这个文件存在 ];然后 提示文件存在 否则 创建这个文件 果如 3.2 [示例]判断文件是否存在,不存在就创建 3.2.1 第一步 按照格式书写判断语句...测试脚本 [root@znix ~]# sh  /server/scripts/if.sh 文件存在 3.4 脚本中进行判断格式 符号 参数 含义 英文 > -gt 大于 great than >...dG    删除光标所在行到最后一行 D      光标所在位置到行尾内容 x       删除光标所在位置一个字符 第7章 昨日回顾 7.1 【sed命令】删除文件空行或只有空格行。

1.3K10

【linux命令讲解大全】081.sed:功能强大流式文本编辑器

接着处理下一行,这样不断重复,直到文件末尾文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件反复操作;编写转换程序等。...p # 打印模板块行。 P # (大写) 打印模板块第一行。 q # 退出Sed。 b # 分支到脚本中带有标记地方,如果分支不存分支到脚本末尾。...里内容被读进来,显示与test匹配行后面,如果匹配多行,file内容将显示在所有匹配行下面: sed '/test/r file' filename 写入文件:w命令 example中所有包含...保持和获取:h命令和G命令 sed处理文件时候,每一行都被保存在一个叫模式空间临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理行都将 打印屏幕。...Sed对于脚本中输入命令非常挑剔,命令末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头行为注释行,且不能跨行。

20410

生信人自我修养:Linux 命令速查手册(全文引用)

但是很多时候文件是从 Windows 或 Mac 系统上传到 Linux 服务器,这可能导致文件格式不兼容,原因是不同平台生成文本文件换行符不一样。...sed command file command 部分,针对每行要进行处理 file,要处理文件 Actions d:删除该行 p:打印该行 i:在行前面插入新行 a:在行后面插入新行 r:读取指定文件内容...fa # 提取chr1和chr2序列 Bash 脚本模板 #!.../bin/bash command1 command2 ... chmod +x run.sh 给 run.sh 脚本增加可执行权限 执行脚本,以下三种方式都可以: # 脚本在前台执行,标准输出和标准错误输出到屏幕.../run.sh bash run.sh sh run.sh # 前提sh链接到了bash如果没有,需要root权限执行命令:ln -sf /bin/bash /bin/sh # 脚本在前台执行,标准输出和标准错误保存到文件

3.9K40

awk、sed、grep

to=https%3A%2F%2Fwww.runoob.com%2Flinux%2Flinux- comm-sed.html) 与awk 相比,sed处理文本行具有更好效率。...d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i :插入, i 后面可以接字串,而这些字串会在新一行出现(目前一行); p :打印,亦即将某个选择数据印出。...应用案例 案例一 sed -e 4a\newline testfile #使用sed 第四行后添加新字符串 nl /etc/passwd | sed '2a drink tea' ## 第二行末尾添加内容.../g' regular_express.txt # 直接修改命令 以上案例表明,sed 一些操作可以放在行末尾,或者放在模式匹配末尾,或者大括号内以分号分隔,或者通过-e 命令,实现多点编辑。...#查找文件名中包含 test 文件中不包含test 行,此时,使用命令为 grep –e "正则表达式" 文件名 grep 除了可以查找单个文件中匹配模式,也可以目录中包含特定字符文件查找匹配模式

1.2K30

生信人自我修养:Linux 命令速查手册

以后就可以直接使用别名ll了,更方便 ll -h # 以人类可读方式显示文件大小 ll -t # 以文件修改时间排序,最新修改最前面 ll -tr # 以文件修改时间排序...但是很多时候文件是从 Windows 或 Mac 系统上传到 Linux 服务器,这可能导致文件格式不兼容,原因是不同平台生成文本文件换行符不一样。...sed command file command 部分,针对每行要进行处理 file,要处理文件 Actions d:删除该行 p:打印该行 i:在行前面插入新行 a:在行后面插入新行 r:读取指定文件内容...fa # 提取chr1和chr2序列 Bash 脚本模板 #!.../run.sh bash run.sh sh run.sh # 前提sh链接到了bash如果没有,需要root权限执行命令:ln -sf /bin/bash /bin/sh # 脚本在前台执行,标准输出和标准错误保存到文件

7.4K21

Linux:sed命令详解

如果没有指定地址,sed 将处理输入文件所有行。 地址是一个数字,表示行号;是“$"符号,表示最后一行。...不同是,sed 使用正则表达式是括斜杠线"/"之间模式。 如果要把正则表达式分隔符"/"改为另一个字符,比如 o,只要在这个字符前加一个反斜线,字符后跟上正则表达式,再跟上这个字符即可。...sed 先将输入行从文件复制到模式空间里,然后对该行执行 sed 命令,最后将模式空间里内容显示屏幕如果发出是命令 d,当前模式空间里输入行会被删除,不被显示。...sed 使用该命令将一个文本文件内容加到当前文件特定位置。...而G命令把暂存缓冲区内容追加到了模式空间的当前行后。此处即追加到了末尾。 7.  sed 脚本 sed 脚本就是写在文件一列 sed 命令。脚本中,要求命令末尾不能有任何多余空格或文本。

7K60

第五章 正则表达式&字符处理

所以,对应 cat f1 && echo bbb,若f1文件不存在,cat命令执行失败,后面echo bbb命令将不再执行。...只有当A条件不满足时,B条件才有审查必要。 所以,对应 cat f1 && echo bbb,若f1文件不存在,cat命令 执行失败,后面echo bbb命令才会执行。...具体sed其他命令和参数可见下面几个表格: 命令 功能 a\ 在当前行后面加入一行或者文本 b label 分支到脚本中带有标号地方,如果标号不存在就分支到脚本末尾 c\ 用新文本改变或者替代本行文本...,或者到脚本末尾 T label 错误分支,从最后一行开始开始,一旦满足要求,将直接到带有标号命令出,或者到脚本末尾 命令 功能 w file 写并追加到模块空间file末尾 W file 写并追加到模块空间第一行到...引导sed脚本文件名 --file=script-file 同上 Sed匹配符号 元字符 功能 例子 匹配 ^ 指定行开始 /^linux/ 所有以linux开头行 $ 指定行末尾 /linux

2.1K20

Shell脚本编程30分钟入门

4 Mar 22 10:22 /bin/sh -> bash 但在Mac OS不是,/bin/sh和/bin/bash是两个不同文件,尽管它们大小只相差100字节左右: iMac:~...简单 vs 高级 如果你觉得自己熟悉语言(如Java、C)写shell脚本实在太啰嗦,你只是想做一些备份文件、安装软件、下载数据之类事情,学着使用sh,bash会是一个好主意。...(例如调用了不存函数),只要没执行到这一行,就不会报错 环境兼容性 如果脚本是提供给别的用户使用使用sh或者bash,你脚本将具有最好环境兼容性,perl很早就是linux标配了,python...:找出字母i在这名话中位置,要在linux下运行,mac下会报错 更多 参见本文档末尾参考资料中Advanced Bash-Scripting Guid Chapter 10.1 数组 管道 条件判断...$real_path 用户输入 执行脚本时传入 脚本运行中输入 select菜单 stdin和stdout 常用命令 sh脚本结合系统命令便有了强大威力,字符处理领域,有grep、awk、sed三剑客

1.4K20

Shell编程100例,超赞!

/bin/bash # 检测本机当前用户是否为超级管理员,如果是管理员,使用 yum 安装 vsftpd,如果不 # 是,提示您非管理员(使用 UID 数字对比版本) if [ $UID -eq...如果用户不输入账户名,提示必须输入账户名并退出脚本;如果用户不输入密码,统一使用默认 123456 作为默认密码。 #!...如果用户 # 不输入账户名,提示必须输入账户名并退出脚本;如果用户不输入密码,统一使用默 # 认 123456 作为默认密码。.../myvm.xml # 修改 MAC 地址,本例使用是常量,每位使用脚本用户需要根据实际情况修改这些值 # 最好这里可以使用便利,这样更适合于批量操作,可以克隆更多虚拟机 sed -i ".../test.sh user.sh 自动为 user.sh 添加解释器信息 # 先使用 grep 判断对象脚本是否已经有解释器信息,如果没有使用 sed 添加解释器以及描述信息 if !

3.4K11

Linux中sed工具使用

接着处理下一行,这样不断重复,直到文件末尾文件内容并没有改变,除非你使用重定向存储输出。...注:sed命令不对原文件进行改变,除非使用 -i 参数;sed命令是一行一行处理 sed命令使用 sed 参数 命令 文件 参数 -f 脚本文件 以选项中指定脚本文件来处理输入文本文件...,这里把bash替换为nologin 这里会找到所有含有root行,然后将第一个root换成ROOT sed-n '/root/{s/bash/ROOT/p}' /etc/passwd 如果要将所有的.../ROOT/p}' /etc/passwd 如果要将所有的root都换成ROOT sed-n'/^root/{s/bash/ROOT/pg}' /etc/passwd 定界符 / 05 sed使用...从文件读入:r 命令 08 file里内容被读进来,显示与test匹配行后面,如果匹配多行,file内容将显示在所有匹配行下面: sed '/test/r file' filename 写入文件

2.2K10

运维工作中sed常规操作命令梳理

处理时,把当前处理行存储临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中内容,处理完成后,把缓冲区内容送往屏幕;接着处理下一行,这样不断重复,直到文件末尾。...如果要添加文本不止一行的话,除了最后一行每一行结尾都要跟\。以上只是控制台输入,脚本中输入情况还是和书上说一样。...使用D,当遇到两个空行时D会删除两个空行中第一个,然后再读入下一行,如果是空行删除第一行,如果空行后有文本模式空间可以正常输出。...它们将脚本控制转移到包含特殊标签行;如果没有标签直接转移到脚本末尾。...t: [address] t [label] t-->test,如果在当前匹配行上成功地进行了替换,那么t命令就转到标签处或脚本末尾(未给定标签默认指向脚本末尾)。

96971
领券