[转帖]sed中使用变量替换

sed,使用,变量,替换 · 浏览次数 : 0

小编点评

**1.sed命令使用双引号的情况下,使用$var直接引用   $ echo|sed \"s/^/$RANDOM.rmvb_/g\"  29328.rmvb_** * `$RANDOM`引用环境变量的值 * `s/^/$RANDOM.rmvb_/g` 将所有 ` ` 替换为 `$RANDOM` **2.sed命令使用单引号的情况下,使用'\"$var\"'引用   $ echo|sed 's/^/'\"$RANDOM\"'.rmvb_/g'  31338.rmvb_** * `'\"$var\"'`引用环境变量的值 * `s/^/'\"$RANDOM\"'.rmvb_/g` 将所有 ` ` 替换为 `$RANDOM` **3.sed命令使用双引号的情况下直接`shell command`或者$(shell command)`引用命令执行的结果** * `$(shell command)` 将命令执行的结果作为新命令执行 * `s/^/'$(echo $RANDOM)'.rmvb_/g` 将所有 ` ` 替换为 `$RANDOM`

正文

sed中使用变量替换
 
1.sed命令使用双引号的情况下,使用$var直接引用
 
$ echo|sed "s/^/$RANDOM.rmvb_/g"
 29328.rmvb_

如果替换的变量内容中含有/符号则会提示如下错误,如
查找当前目录下的目录文件并将相对路径替换为绝对路径
find . -type f | sed -n "s/\./$PWD/p"
sed: -e expression #1, char 19: unknown option to `s'
从语法上看,没有任何问题;但由于变量中包含有“/”作为分隔符,这会和sed的替换操作的分隔符“/”引起混淆;所以,只要不使用“/”做分隔符就可以解决这个问题,如果使用“%”而不是“/”来作为sed的替换操作的分隔符,就不会出错。其实使用#或%或;作为分隔符也是可以的,只要不会与替换中有相同的而且不是元字符的特殊符号都是可以的;使用时可以根据情况灵活选择。
find . -type f | sed -n "s%\.%$PWD%p"
find . -type f | sed -n "s#\.#$PWD#p"

# 上面例子引用了一个环境变量$RANDOM的值
 
2.sed命令使用单引号的情况下,使用'"$var"'引用
 
类似,我们可以看到
 
$ echo|sed 's/^/'"$RANDOM"'.rmvb_/g'
 31338.rmvb_
 
sed中执行外部命令
 
1.sed命令使用单引号的情况下使用'`shell command`'或者'$(shell command)'引用命令执行的结果
 
还是以上面案例分析,例子如下
 
$ echo|sed 's/^/'`echo $RANDOM`'.rmvb_/g'
 8063.rmvb_
 

# 上面的例子使用了旧式的命令替换,也可以采用新式的命令替换方法,如下
 
$ echo|sed 's/^/'$(echo $RANDOM)'.rmvb_/g'
 18554.rmvb_
 

# 下面例子取用当前日期作为结果的一部分,如下
 
$ echo|sed 's/^/'$(date +"%Y%m%d")'.rmvb_/g'
 20120108.rmvb_
 

2.sed命令使用双引号的情况下直接`shell command`或者$(shell command)引用命令执行的结果
 

类似的,双引号的情况,如下
 
$ echo|sed "s/^/$(date +"%Y%m%d").rmvb_/g"
 20120108.rmvb_
 

# 使用环境变量$RANDOM以及旧式命令替换的例子
 
$ echo|sed "s/^/`echo $RANDOM`.rmvb_/g"
 4988.rmvb_

文章知识点与官方知识档案匹配,可进一步学习相关知识
Linux技能树Linux实用命令sed命令4069 人正在系统学习中

与[转帖]sed中使用变量替换相似的内容:

[转帖]sed中使用变量替换

sed中使用变量替换 1.sed命令使用双引号的情况下,使用$var直接引用 $ echo|sed "s/^/$RANDOM.rmvb_/g" 29328.rmvb_ 如果替换的变量内容中含有/符号则会提示如下错误,如 查找当前目录下的目录文件并将相对路径替换为绝对路径 find . -type f

[转帖]linux删除文本文件空白行

https://zhuanlan.zhihu.com/p/627152095 sed命令 在Linux中,可以使用sed命令批量删除文本中的空白行。以下是一个示例命令: sed -i '/^$/d' filename.txt 这个命令将会删除 filename.txt 文件中所有的空白行,并且直接在

[转帖]使用 sed 处理文本文件

https://www.cnblogs.com/wx2020/p/16269905.html 前言 sed 是一款 GNU 流编辑器,可以按照指定的规则去处理文本文件或流,其强大的功能使用户在命令中快捷地修改文本文件成为可能。 它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输

[转帖]linux删除文本文件空白行

linux删除文本文件空白行https://www.zhihu.com/people/chen-kai-84-54-75 sed命令 在Linux中,可以使用sed命令批量删除文本中的空白行。以下是一个示例命令: sed -i '/^$/d' filename.txt 这个命令将会删除 filena

[转帖]如何使用 sed 命令删除文件中的行

https://zhuanlan.zhihu.com/p/80212245 sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要作用。可用于删除或移动与给定模式匹配的特定行。-- Magesh Maruthamuthu(作者) Sed 代表 流编辑器(Stream Editor),常

[转帖]Linux三剑客之sed的初阶使用

https://www.jianshu.com/p/ceea435635a2 大多数情况下,对于文件内容的修改需要依赖交互式的软件来实现,例如vim修改文件的内容则是依赖光标的移动和修改操作来完成对文件某一处内容的修改。然而,在linux操作系统中,也存在一种非交互式的方法来修改文件内容,通过发送特

[转帖]linux学习:sed与awk与tr用法整理

https://www.cnblogs.com/LO-gin/p/6882490.html 流编辑器:sed 语法:sed [-hnV][-e

[转帖]Linux常用命令:利用sed命令删除文件的特定行

http://www.dbs724.com/12806.html 前言 正常来说,我们想要删除文件中的某些行内容,一般都是先打开这个文件,然后找到要删除的内容,再然后选中这些行并按删除键进行删除,这在数据量很少时是没有问题的。但是,一旦文件中的行数据非常多,而且数据冗杂的情况下,你还要用上面的方法去

[转帖]Linux下AWK、SED、GREP、FIND命令详解

https://www.jianshu.com/p/d54e0359db01 AWK AWK是一个优良的文本处理工具,Linux和Unix环境中现有的功能最强大的数据处理引擎之一。 语法 awk [选项参数] 'script' var=value file(s) 或 awk [选项参数] -f sc

[转帖] Linux命令拾遗-文本处理篇

https://www.cnblogs.com/codelogs/p/16060413.html 简介# 这是Linux命令拾遗系列的第二篇,本篇主要介绍Linux中与文本处理相关的命令,如xargs、grep、sed、awk等。 本系列文章索引Linux命令拾遗-入门篇 常用文本相关命令# cat