是否可以搜索字符串,如果存在,只保留该行...整行,而不仅仅是字符串?我有两个逗号分隔的数据变量。我想做的是遍历我的$ 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。
答案 0 :(得分:1)
如果您不希望sed
打印,除非您提出要求,请写下:
... | sed -n "/$col1/{s/$col1/$col2,$col1/i; p}"
我假设i
后缀对你的sed
方言有意义;这不标准。 -n
表示“不自动打印”。 /$col1/
寻找模式;当找到它时,执行大括号中的命令 - 你的替代操作,然后'打印线'。
请注意,如果item
中出现nitemare
,则您的模式$example
将匹配{{1}}。