Linux下的shell编程 如何替换文件中的内容

Linux下的shell编程 如何替换文件中的内容,第1张

可以这样做:

方法1:sed -i 's/被替换的内容/要替换成的内容/' file

方法2:sed 's/被替换的内容/要替换成的内容/g' file >file.out;mv file.out file。

扩展资料:

Shell编程的常用技巧:

一、自动补齐:在linux中对于命令或路径,可以TAB键进行自动补全,以下事项需要注意:

1、只存在一个该输入字符开头的命令或路径,此时自动补全;

2、存在多个该输入字符开头的命令或路径,此时第一次点击TAB键无效,此时再次点击TAB会罗列出所有该字符开头的命令或路径,继续输入直到仅仅剩一个时自动补全;

3、如果命令已经是完整的,TAB键则是本来的移动功能;而路径的话要看命令自身的行为决定后续动作。

二、历史命令

1、history命令可以显示历史执行过的命令;

2、使用!+序号执行该序号对应的命令;

3、使用!+字符执行该字符开头的最后一次执行的指令。

三、命令别名

1、实现别名:alias ddd="df -Th";

2、删除别名:unalias ddd;

3、显示所有别名命令列表:alias;

4、存放位置:~/.bashrc  (加入该文件后,重启后不会消失)。

四、重定向

1、重定向标准输入:<命令接收输入的途径由键盘改为文件;

2、重定向标准输出:>将命令的执行结果输出到指定文件,而不是直接显示到屏幕;

3、重定向标准输出:>>将命令的执行结果追加输出到指定文件;

4、重定向标准错误:2>清除指定文件的内容,并把标准错误信息保存到指定文件;

5、重定向标准错误:2>>标准错误信息追加到指定文件;

6、重定向标准输出和标准错误:&>  将标准输出、标准错误信息全部保存到指定文件,而不是直接显示在屏幕上。

查找批量替换文件时,去除某种类型的文件,下面表示在./salt/*下的所有文件中,不包括tar.gz结尾的文件,搜索包含有node01字符串的文件

grep "node01" -rl ./salt/* --exclude=*.tar.gz

其实这里的 -r表示递归,-l表示输出文件名,

也可以将 -rl替换为-rn,-n表示是哪一行,会输出行号详细信息

grep "node01" -rn ./salt/* --exclude=*.tar.gz

替换字符串:

把./salt/*目前下所有文件进行遍历,查是否包含node01字符串的,不包括tar.gz结尾的文件。然后把node01用test01进行批量替换。

grep "node01" -rl ./salt/*  --exclude=*.tar.gz | xargs sed -i 's/node01/test01/g'

Linux sed 命令是利用脚本来处理文本文件。

sed 可依照脚本的指令来处理、编辑文本文件。

Sed 主要用来自动编辑一个或多个文件、简化对文件的反复 *** 作、编写转换程序等。

语法

参数说明:

regular_express.txt 文件内容如下:

利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !

:q:q

利用 sed 直接在 regular_express.txt 最后一行加入 # This is a test:

由於 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增 # This is a test!

sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

sed -i 常见用法(直接对文本文件进行 *** 作的)

替换掉每行的第一个字符串

替换掉所有的字符串 sed -i 's/原字符串/新字符串/g' file

去掉 “行首” 带“@”的首字母@

特定字符串的行前插入新行

特定字符串的行后插入新行

特定字符串的删除


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6058745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存