【发布时间】:2012-03-17 12:20:06
【问题描述】:
是否可以搜索一个字符串,如果存在,只保留该行...完整的行,而不仅仅是字符串?我有两个逗号分隔的数据变量。我想做的是遍历我的 $data 变量并将它的 col2 用作搜索项。然后搜索 $example 变量,如果找到匹配项,则仅将一些数据添加到该行。在此下方将数据添加到正确的内容中,但它会打印两次,因为在这种情况下有两个项目。最好不要打印任何东西,除非它是匹配的,然后打印整行
#!/bin/bash
data="item,thing
item2,thing2"
example="a,lot,of,thing,in,this,csv
big,foot,lives,next,to,me,yikes"
echo "$data" | while IFS=, read -r col1 col2
do
echo "$example" | sed "s/$col1/$col2,$col1/i"
done
我尝试将 col2 设为数组键,但没有成功。可能是因为我使用的是 Mac,并且根据我阅读的内容,它附带了旧版本的 Bash。
【问题讨论】:
-
也许你想要一个像这样的 sed 脚本:"/$col1/s/^/$col2,/"
-
@VaughnCato - 我的 sed 脚本在上面工作,完全符合我的要求,它只是添加了比我想要的更多的数据。
-
你的脚本是这样的,它会打印每一行,但是把搜索放在开头,它只会打印匹配的行。
-
@VaughnCato:一开始的模式没有任何赔率;您需要
-n和p(打印)命令才能有所作为。 -
@JonathanLeffler:没错,我猜我累了。