sed,grep,进阶+source+export+环境变量
三剑客之sed
概括流程:从文件或管道中,可迭代读取。
命令格式: sed(软件) 选项 sed命令 输入文件
增
两个sed命令:
a: 追加文本到指定行后
i: 插入到指定行前
sed -i '1i houbinglei' log.txt
sed -i '1a houbinglei' log.txt
多行增加(两种方式)
sed '3a houbinglei\nliuchunhui' log.txt
sed '3a LLL\
> KKK\
> iii' log.txt
指定执行的地址范围 n1,n2 sed命令
地址用逗号分割,n1,n2可以是数字,正则表达式,或者二者的组合。
10 sed命令 对第十行操作
10.20 包括第10,20行,对10到20行操作
10,+20 对10到30行操作
1~2 等差数列,对1、3、5、7等行操作
10,$ 对10行到最后一行操作
/oldboy/ 对匹配这个字符串的行操作
/oldboy/,+2 对匹配oldboy的行到其后两行操作
删
sed命令 d
sed '1~2d' log.txt
sed '/oldboy/d' log.txt
文本替换
s: 单独使用,将第一处匹配的字符串进行替换 ==》sed命令
g: 每一行进行全部替换 ==》 非sed命令、
-i: 修改文件内容 sed软件的选项
sed -i '3s/old/new/' log.txt 指定行精确修改
双引号、单引号区别:
双引号可以识别变量
单引号不可以
sed软件的() 可以记住正则表达式的一部分,()本身是扩展正则表达式,两个\表示转义,然后\1为第一个小括号里匹配的内容,\2为第二个小括号里匹配的内容,sed最多可以记住9个。
sed 's/^.*am \([a-z]*\) \<student\>/\1/g' txt.xx
i am oldboy student ==> oldboy
& 代表匹配到的东西。,就是old,s/old/new/
touch file{1..5}.txt 创建5个文件
ls |grep stu | sed 's/\(^.*\).txt/mv & \1.jpg/' | bash 传递给bash执行命令
mv stu_1022_1_finished.txt stu_1022_1_finished.jpg
mv stu_1022_2_finished.txt stu_1022_2_finished.jpg
mv stu_1022_3_finished.txt stu_1022_3_finished.jpg
mv stu_1022_4_finished.txt stu_1022_4_finished.jpg
mv stu_1022_5_finished.txt stu_1022_5_finished.jpg
查
sed-n '2p' log.txt -n 和p一起用,只会显示指定输出的行
三剑客之grep
点的特殊含义:
1. 当前目录
2. 使得文件生效,相当于source
3. 隐藏文件
4. 任意一个字符(正则匹配)
grep参数:
-c 计算找到搜索字符串的次数
-n 显示行号
-i 忽略大小写
-v 取反
-A 匹配字符串及其行后n行,after
-B before
-C context,前后各n行
source
当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录;这时就想到用source命令,如:source /etc/profile
对source进行了学习,并且用它与sh 执行脚本进行了对比,现在总结一下。
source命令:
source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。
功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
用法:
source filename 或 . filename
source命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称。
source filename 与 sh filename 及./filename执行脚本的区别在那里呢?
1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
举例说明:
1.新建一个test.sh脚本,内容为:A=1
2.然后使其可执行chmod +x test.sh
3.运行sh test.sh后,echo $A,显示为空,因为A=1并未传回给当前shell
4.运行./test.sh后,也是一样的效果
5.运行source test.sh 或者 . test.sh,然后echo $A,则会显示1,说明A=1的变量在当前shell中
export
export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。
export 查看当前环境变量
环境变量
改变环境变量,只对当前用户生效
修改设置方法:在用户主目录”~”下的隐藏文件 “.bash_profile”中添加自己想要的环境变量。
export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"
同样注意,添加完成后新的环境变量不会立即生效,除非你调用source ./.bash_profile 该文件才会生效。否则只能在下次重进此用户时才能生效。
对所有用户生效
修改/etc/profile
export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"
保存,退出,然后运行:
#source /etc/profile
临时有效的环境变量(只对当前shell有效)
直接使用export指令添加。
设置环境变量常用的几个指令
echo
查看显示环境变量,使用时要加上符号“$”例:echo $PATH
export
设置新的环境变量
export 新环境变量名=内容
例:export MYNAME=”LLZZ”
修改环境变量
修改环境变量没有指令,可以直接使用环境变量名进行修改。
例:MYNAME=”ZZLL”
env
查看所有环境变量
set
查看本地定义的所有shell变量
unset
删除一个环境变量
例 unset MYNAME
readonly
设置只读环境变量。
例:readonly MYNAME
sed,grep,进阶+source+export+环境变量的更多相关文章
- Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本
source source /root/.bashrc #让修改后的配置文件在不重启系统的情况下生效.source等同于. 环境变量目录 /etc/profile /etc/profile.d/*.s ...
- linux export环境变量
Linux export命令参数(转载) 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环 ...
- 关于export环境变量生存期
今天对export方式设置的环境变量的生存期有很大疑惑. 按变量的生存周期来划分,Linux变量可分为两类,它们的修改方法如下:(1)永久的:需要修改配置文件,变量永久生效. 常见的配置文件包括 ...
- windbg学习进阶之——windbg环境变量配置
接触性能调优以来一直想学下windbg分析dump,每次看老师几个命令就能找到很底层的问题原因那简直就是羡慕加崇拜啊~但是这接近一年了,愣是没啥进展呢,主要就是在今天整理的这部分卡住了...这理由找的 ...
- export环境变量
/etc/profile和/etc/profile.d/区别 [root@zzx conf]# vim /etc/profile.d/tomcat.sh 添加如下内容再运行脚本就可以添加环境变量 ...
- ROS学习笔记(四)——环境变量配置
1.查看环境变量配置情况,其实并没有什么卵用 $ export | grep ROS 或者用 $ printenv | grep ROS2.配置环境变量??$ source /opt/ros/indi ...
- 正则与sed,grep,awk三剑客
系统登录顺序: /etc/profile /etc/profile.d/a.sh (a.sh自己建的) /root/.bash_profile /root/.bashrc /etc/bashrc /b ...
- Mac 配置环境变量
系统:mac OS 10.10.3 or later 1.如果不能使用一些常用终端命令,如ls,open.可能是环境变量配置不当导致的.尤其是手动修改 输入以下命令: export PATH=/us ...
- UNIX下的环境变量--转载
所有环境变量名都是大写小写,系统会当作shell script自定义变量,而不会当作环境变量 [root@mac-home macg]# echo $path ...
随机推荐
- DataStructure.BloomFilter
Bloom Filters Ref[1] 1. 简介 Bloom filter(布隆过滤器:有更好的或正确的翻译,告诉我) 是一个数据结构,该数据结构快速并且内存高效,它可以告诉你某个元素是否在集合中 ...
- KeyPress键盘按键ASCII值对应表
vbKeyLButton 1 鼠标左键 vbKeyRButton 2 鼠标右键 vbKeyCancel 3 CANCEL 键 vbKeyMButton 4 鼠标中键 vbKeyBack 8 B ...
- MySQL学习笔记-cache 与 buffer
Cache和Buffer是两个不同的概念,简单的说,Cache是加速"读",而 buffer是缓冲"写",前者解决读的问题,保存从磁盘上读出的数据,后者是解决写 ...
- NC 5系自定义显示公式
1.继承NcInnerFunction(nc.vo.pub.formulaset.function.NcInnerFunction) 在方法中引用父类方法function,并在里面写方法 @Overr ...
- 服务程序 -st
Windows 服务由三部分组成:1.一个服务可执行文件:2.一个服务控制程序(SCP):3.服务控制管理器(SCM),负责在 HKLM\SYSTEM\CurrentControlSet\Servic ...
- Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块
一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...
- SQL Server 查询中文字段返回为空
昨晚维护系统数据时,遇到个奇怪现象.明明数据库里有数据,查询结果就是返回为空.具体情况是这样的,查询工作日志表里关于工作描述的情况,以中文内容匹配工作描述字段,其中匹配内容里包含有空格. 尝试去掉第一 ...
- 关于Spring父容器和SpringMvc子容器
在SSM项目中,会有SpringMvc容器(子容器)和Spring容器(父容器) 一共2个容器 基本规则: 子容器可以访问父容器的bean,父容器不能访问子容器的bean. 当<context: ...
- R入门(一)
简单的算术操作和向量运算 向量赋值:函数c( ),参数可以是一个或多个数,也可以是向量 赋值符号‘<-’ 向量运算:exp(),log(),sin(),tan(),sqrt(),max(),mi ...
- Linux top命令总结
一:在bash里输入top后出现的数据当中目前自己容易理解的有 1.task:中的 num total表示总共有num个进程:num running是正在运行的进程数:num sleeping是正在休 ...