如何传递参数给sed作为表达式的一部分

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
liu滔
帖子: 7214
注册时间: 2010-10-09 23:01

如何传递参数给sed作为表达式的一部分

#1

帖子 liu滔 » 2011-08-27 19:05

假设这个世界是美好的,我的想法是对的,那么下面的命令是可以成功执行的

[bash]i=1
sed -n -e "$ip" bgdb.txt[/bash]

如果这个世界还是美好的,那么这个命令应该可以取出bgdb.txt中的第一行的内容并打印到屏幕上

可惜这样是不行的,这样我试过了,结果是把整个文件的内容都输出了 :em06 :em20

求正确的方法 :em02
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: 如何传递参数给sed作为表达式的一部分

#2

帖子 我就是我2 » 2011-08-27 19:12

sed -n -e "${i}p" bgdb.txt
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
头像
liu滔
帖子: 7214
注册时间: 2010-10-09 23:01

Re: 如何传递参数给sed作为表达式的一部分

#3

帖子 liu滔 » 2011-08-27 19:14

我就是我2 写了:sed -n -e "${i}p" bgdb.txt
谢谢,成功了 :em11
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: 如何传递参数给sed作为表达式的一部分

#4

帖子 我就是我2 » 2011-08-27 19:16

liu滔 写了:
我就是我2 写了:sed -n -e "${i}p" bgdb.txt
谢谢,成功了 :em11
shell里使用变量时为了防止误解,可以使用{}包起变量
i=1
echo $id
echo ${i}d
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 如何传递参数给sed作为表达式的一部分

#5

帖子 eexpress » 2011-08-27 21:47

代码: 全选

greenB='\x1b[1;32m'; end='\x1b[0m'

	/usr/bin/nmap -sP $ip|sed "s/[1-9][0-9.]\{6,14\}/${greenB}&${end}/g"
● 鸣学
头像
liu滔
帖子: 7214
注册时间: 2010-10-09 23:01

Re: 如何传递参数给sed作为表达式的一部分

#6

帖子 liu滔 » 2011-08-27 22:06

我表示神那个真的没有看懂 :em20

神改签名了,这次的神喻是什么意思呢?鸣学?学说话? :em06
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: 如何传递参数给sed作为表达式的一部分

#7

帖子 我就是我2 » 2011-08-28 0:50

代码可能比较丑陋
不懂Common Lisp :em03 所以不知道它是否ugly :em20
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
头像
liu滔
帖子: 7214
注册时间: 2010-10-09 23:01

Re: 如何传递参数给sed作为表达式的一部分

#8

帖子 liu滔 » 2011-08-28 9:48

我就是我2 写了:
代码可能比较丑陋
不懂Common Lisp :em03 所以不知道它是否ugly :em20
话说这一段引用是哪来的?发错贴了? :em06
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: 如何传递参数给sed作为表达式的一部分

#9

帖子 我就是我2 » 2011-08-28 10:11

liu滔 写了:
我就是我2 写了:
代码可能比较丑陋
不懂Common Lisp :em03 所以不知道它是否ugly :em20
话说这一段引用是哪来的?发错贴了? :em06
绝对没有错.
发布自己写的Common Lisp解释器的第一个正式版,版本为1.3,传送门
那个code里的介绍 :em20 :em20
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
头像
liu滔
帖子: 7214
注册时间: 2010-10-09 23:01

Re: 如何传递参数给sed作为表达式的一部分

#10

帖子 liu滔 » 2011-08-28 12:30

我就是我2 写了:
liu滔 写了:
我就是我2 写了:
代码可能比较丑陋
不懂Common Lisp :em03 所以不知道它是否ugly :em20
话说这一段引用是哪来的?发错贴了? :em06
绝对没有错.
发布自己写的Common Lisp解释器的第一个正式版,版本为1.3,传送门
那个code里的介绍 :em20 :em20
这都被你引用了 :em20
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 如何传递参数给sed作为表达式的一部分

#11

帖子 eexpress » 2011-08-28 19:18

没看懂?不是吧。
照着执行下。
● 鸣学
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: 如何传递参数给sed作为表达式的一部分

#12

帖子 cjxgm » 2011-08-28 21:05

eexpress 写了:没看懂?不是吧。
照着执行下。

代码: 全选

cjxgm@clans ~$ greenB='\x1b[1;32m'; end='\x1b[0m'
cjxgm@clans ~$ 
cjxgm@clans ~$    /usr/bin/nmap -sP $ip|sed "s/[1-9][0-9.]\{6,14\}/${greenB}&${end}/g"
bash: /usr/bin/nmap: 没有那个文件或目录
:em06
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: 如何传递参数给sed作为表达式的一部分

#13

帖子 我就是我2 » 2011-08-28 21:24

代码: 全选

greenB='\x1b[1;32m'; end='\x1b[0m'
nmap -sP 192.168.1.1 |sed "s/[1-9][0-9.]\{6,14\}/${greenB}&${end}/g"
Starting Nmap 5.51 ( http://nmap.org ) at 2011-08-28 21:22 CST
Nmap scan report for 192.168.1.1
Host is up (0.0041s latency).
Nmap done: 1 IP address (1 host up) scanned in 1.63 seconds
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
回复