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

作者&投稿:苑祝 (若有异议请与网页底部的电邮联系)
linux shell编程中文件内容修改方法~

两种思路,
第一种,你打开文件,找到匹配的行,改掉,重写个文件,删除原来的。改这个文件为一样的名字。
第二种,以需要改写的文本,把原来的文件分成两个部分,要改写的部分空出,然后重定向合并到一个文件里。
例如,
file.txt
分为
a.txt
b.txt
现在
1
a.txt>file.txt
2
变行
>>file
.txt
3
b.txt
>>file.txt

1、启动Linux系统,用ssh工具连上Linux系统。

2、bash自带了一些调试选项。

3、在脚本启动时添加调试选项。来调试debug.sh。

4、在脚本内添加调试选项,使用set 命令。

5、现在要看debug.sh脚本执行的调试信息,就不需要使用bash -x ./debug.sh执行了。

6、在脚本开头添加-xv选项。

7、同样现在执行./debug.sh,也可打印出调试信息。

注意事项:
shell脚本在计算机科学中,是指“为使用者提供操作界面”的软件(命令解析器)。类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

可以这样做:

方法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、重定向标准输出和标准错误:&>  将标准输出、标准错误信息全部保存到指定文件,而不是直接显示在屏幕上。



shell编程中替换文件中的内容用到四个命sed,find ,grep,awk
下面是三种使用替换的方法
方法一:find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'下面这个例子就是将当前目录及所有子目录下的所有pom.xml文件中的”http://repo1.maven.org/maven2“ 替换为”http://localhost:8081/nexus/content/groups/public“.
find -name 'pom.xml' | xargs perl -pi -e 's|http://repo1.maven.org/maven2|http://localhost:8081/nexus/content /groups/public|g'这里用到了Perl语言,
perl -pi -e 在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的Perl 脚本那样运行该代码.
从命令行中使用Perl 能够帮助实现一些强大的、实时的转换。认真研究正则表达式,并正确地使用,将会为您省去大量的手工编辑工作。

find -name 'pom.xml' | xargs perl -pi -e 's|http://repo1.maven.org/maven2|http://localhost:8081/nexus/content/groups/public|g'

方法二:Linux下批量替换多个文件中的字符串的简单方法。用sed命令可以批量替换多个文件中的字符串。
用sed命令可以批量替换多个文件中的 字符串。
sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
例如:我要把mahuinan替换 为huinanma,执行命令:
sed -i "s/mahuinan/huinanma/g" 'grep mahuinan -rl /www'
这是目前linux最简单的批量替换字符串命令了!
具体格式如下:
sed -i "s/oldString/newString/g" `grep oldString -rl /path`
实例代码:sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl /usr/aa`
sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl ./`

方法三:在日程的开发过程中,可能大家会遇到将某个变量名修改 为另一个变量名的情况,如果这个变量是一个局部变量的话,vi足以胜任,但是如果是某个全局变量的话,并且在很多文件中进行了使用,这个时候使用vi就是 一个不明智的选择。这里给出一个简单的shell命令,可以一次性将所有文件中的指定字符串进行修改:

grep "abc" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/abc/abcde/g'

批量替换 配置文件中的IP:
grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/172\.0\.0\.1/g'

sed -i "s#^connection =.*#connection =mysql://keystone:chenshake@192.168.4.97/keystone #g" file

语法 sed -i "s/内容1/内容2/“ 文件名,内容1后面的.* 是正则匹配connection=任意内容,#是分隔符,相当于 我们常用的sed的“/”,内容2是需要替换的内容,后面的g是全局替换 file,是操作对象即参数
因为替换内容中有“/”所以建议用“#”做分隔符,这样不需要转译“/”

%s/string1/string2/g
用string2替代string1

使用sed、awk都可以实现替换功能。


Linux的Shell相关知识简要描述几种主流的shell及特点!!!
它支持不少新功能。例如:提供了一个命令列(command line)编辑程序,提供了命令列不全功能,提供了拼写更正功能。它能自动检测并更正在命令列拼错的命令或单字;危险命令侦测并提醒的功能,避免用户小心执行rm*这种杀伤力极大的命令;提供常用命令的快捷方式 BASH shell是Linux下对Bourne shell向下兼容的一...

linux中的shell究竟是什么??
linux是早期是个内核,后来添加了其他功能成了操作系统。内核就是操作系统的核心,管理设备,cpu调度,内存管理等。内核有些api可以被外面程序员调用。这些api叫做“系统调用”。常用的系统调用被集合成一个个命令程序。如ls,cd,rm等。。shell是linux系统的一个解释程序。用于方便执行一些命令程序。就是...

在Linux中,shell是什么??
补充下:Shell是一种具备特殊功能的程序,它是介于使用者和 UNIX\/Linux 操作系统之核心程序(kernel)间的一个接口。为什么我们说 shell 是一种介于系统核心程序与使用者间的中介者呢?读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分配者,当您有需求时,您得向系统提出;从操作系统...

linux中的shell是什么?有什么作用?
shell 相当于操作系统的接口 ,想当于你用windows时候的桌面,只不过这个接口是纯命令行的 通常的,所有的服务用到的用户 由于不需要实际登陆系统, 所以通常都不必分配shell ,这对服务的正常运行和使用没有任何影响 测试 samba, 可以随便用一台windows机器 或者本机上任何其它可登陆的帐户 ...

linux 怎么进入shell编程模式
1、连接上相应的linux主机,进入到等待输入shell指令的linux命令行状态下。2、在linux命令行下输入shell指令:vi test.shell。3、最后,按下回车键执行shell指令,此时发现用vi命令成功进入了shell编程模式中。

linux中Shell历史命令记录文件的路径是什么?
路径\/etc\/bashrc。在 Linux 下面可以使用 history 命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的 .bash_history 文件中。通过这个文件可以查询 shell 命令的执行历史。代码如下:HISTFILESIZE=4000 HISTSIZE=4000 HISTTIMEFORMAT='%F %T'export HISTTIMEFORMAT 注意:HISTFILESIZE ...

linux 如何查看shell版本
需要准备的材料分别是:电脑、linux连接工具。1、首先连接上linux主机,进入等待输入指令的linux命令行状态。2、输入:bash --version,按回车。3、此时打印出的“version 4.2.46(1)-release”就是该shell的版本。

Linux下查看使用的是哪种shell的方法汇总
查看当前使用的shell方法    一、最常用的查看shell的命令,但不能实时反映当前shell 复制代码    代码如下:[root@localhost ~]$ echo $SHELL    \/bin\/bash 二、下面这个用法并不是所有shell都支持 复制代码    代码如下...

Linux下的基本操作和常用命令
随着mono的发展,asp.net也实现了跨平台的开发,而要mono在Linux下跑起来,也需要掌握一些Linux的操作,以下为大家总结了一些关于Linux的基本操作。Linux命令基础操作一、Shell的简介Linux系统中由内核,Shell,文件系统和一些实用的程序构造。Shell是操作系统提供给用户使用的界面它提供了用户与内核进行交互操作的一种接口。She...

linux中的shell究竟是什么?
shell或者linux命令的文件.象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.在文本编辑环境下,依据shell的语法规则,输入一些shell\/linux命令行,形成一个完整 的程序文件.tcsh shell 不使用test命令,但是tcsh中的表达式同样能承担相同的功能.tcsh 支持的表达式于C中的表达式相同.通常...

潜江市14793468183: 怎么在Linux下进行Shell编程 -
虫姜磷酸: 使用VI写一个shell脚本文件,再对文件加个执行的权限就好了

潜江市14793468183: 怎样编写Linux shell script -
虫姜磷酸: 1.How to write shell script ? a.首先用任何的编译器(vi,vim,kwrite,....)编写一个shell script;b.然后按照下面的方法给你编译的shell script添加可执行属性;chmod 添加(删除)属性 文件名称 例如:chmod +x your_script_name 或者chmod ...

潜江市14793468183: Linux下的shell工作原理是什么? -
虫姜磷酸: Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言、命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从...

潜江市14793468183: linux shell 编程 -
虫姜磷酸: (1)编写shell程序fileback:#!/bin/sh DIRNAME=`ls /root | grep bak` if [ -z "$DIRNAME" ] ; then mkdir /root/bak cd /root/bak fi YY=`date +%y` MM=`date +%m` DD=`date +%d` BACKETC=$YY$MM$DD_etc.tar.gz tar zcvf $BACKETC /etc echo "...

潜江市14793468183: linux环境下shell脚本编写 -
虫姜磷酸: 假设.out文件在/home目录下: 1.在命令行窗口下直接敲 /home/.out 回车就运行了. 2.shell脚本的话,如下: #!/bin/bash /home/.out =========================================== 要求不高的话,可以看《linux就该这么学》或者《鸟哥linux私房菜》中专门讲shell脚本的那章,很快能入门. 系统一些的学法,可以看《linux命令行和shell脚本编程宝典》,里面关于基础的、高级的用法都有讲到,很完整. =========================================== 不知道我对你问题的理解对不对头.:)

潜江市14793468183: 请问为什么要学习linux下的shell编程.
虫姜磷酸: 1、首先我们了解一下shell编程是什么,其实shell编程就是一坨linux命令的集合再加上一些控制语句而已2、为什么要学习linux下的shell编程,我们平时在做运维工作时总会遇到一些重复的工作,如果我们会shell编程的话就可以将这些重复的工作写成shell脚本来执行,就不需要一条命令一条命令的去输入了,这就跟我们有腿可以走路,为什么还要发明汽车一样,都是为了提高我们的工作效率,减轻工作量,有时候有些工作是要在半夜或者是其他不方便工作的时候完成的,这时我们也可以让计划任务帮我们执行脚本来完成工作3、shell脚本的一些语法和命令比较特殊和比较严格,与一般的编程语言有所区别,需要多练习才能很好的掌握

潜江市14793468183: linux下shell编程能做什么? -
虫姜磷酸: 单独的shell 命令可以做一些你需要实现的基础的目的,比如查看信息,修改编辑,sed,awk可以处理统计数据等; 而脚本可将这些功能组合而完成更强大的功能

潜江市14793468183: 在linux下,用c++如何编写shell -
虫姜磷酸: 没有使用C++的shell脚本.一般用bash写脚本 要用C的话,可以用tcsh.它是用一种类似C的脚本语言,但运行得太慢了.要用与C类似得脚本的话,可以用PHP或Perl来运行脚本.

潜江市14793468183: 学习linux shell 下的编程有什么用? -
虫姜磷酸: 学习使用linux,无非有几个目的: 1.尝试一下的人,只需要用上两三天就可以和linux说886.因为普通初学者都不会喜欢linux的. 2.纯粹喜欢linux的人,虽然起初入门很慢,但是渐渐的,他会发现linux有很多让他很爽的地方,并且,越学越爽. ...

潜江市14793468183: linux shell难吗 -
虫姜磷酸: 学linux未必要学shell,但是在系统管理等方面,shell是非常重要的 shell本身不难,但是要求对命令熟悉,所以要花不少时间 shell的特点是简短易懂,但是执行效率低,使用时要自己斟酌

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网