linux sed 使用 我有个1.sh文件内容如下 sed -i 's/$1/$2/g' 1.txt
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux sed 使用 我有个1.sh文件内容如下 sed -i 's/$1/$2/g' 1.txt相关的知识,希望对你有一定的参考价值。
其中$1 $2 就是 ./1.txt one first 后面的参数 one 和first
就是将1.txt中 的one 替换为first
但是我的写法肯定替换不了,请问sed 如何替换传递的参数值
一,单引号改为双引号
sed -i "s/$1/$2/g" 1.txt
二,把shell变量$1和$2拿到单引号外面来
sed -i 's/'$1'/'$2'/g' 1.txt
原因其实就是单引号会消除$取值符号的特殊含义,$只会被解析为字符本身。 参考技术A sed -i 's/'$1'/'$2'/g' 1.txt
用单引号把shell变量扩起来
Linux之Shell编程(16)--sed关键字详解演示
今天继续演示sed的其它用法。
-f:把多个子命令操作写入脚本文件,然后使用 -f 选项来指定该脚本。
test.sh内容:
sed.sh内容:
注意:
脚本文件中的子命令串不需要输入单引号。
执行结果:
sed常用flags标记
g:对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作。(这部分已演示)
w: 将缓冲区中的内容写到指定的 file 文件中。
data.txt内容:
结果:
运行后file.txt内容
可以发现,w的作用就是将符合指令变化的行的内容输出到另一个文件中,输出的文件为指令中的操作的文件,末尾的文件为原始文件。
注意:
1.sed ‘s/1/x/w file.txt’ data.txt
这条指令的意思是,将data.txt中经过处理变化(1变为x)后的行的内容,输出到file.txt中。
输出后,data.txt内容不变,file.txt会清掉原来内容,只会接收data.txt中变化后的行的内容。指令前内容:
指令后内容:
2.如果改为sed -i ‘s/1/x/w file.txt’ data.txt
结果如下
可以看到:data.txt中的内容也会改变,但file.txt依旧会先清除原始文件内容,再接收data.txt变化的内容。
r:将一个文件的数据插入到当前数据流的指定位置
file.txt内容:
data.txt内容:
指令运行结果:
运行后的data.txt内容
注意:
sed -i ‘2r file.txt’ data.txt
这条指令的意思是,将file.txt中的内容输出到data.txt的第二行之后。不加-i不会改变data.txt文件内容。
以上是关于linux sed 使用 我有个1.sh文件内容如下 sed -i 's/$1/$2/g' 1.txt的主要内容,如果未能解决你的问题,请参考以下文章