Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 在整行中搜索模式,并在同一行中添加一个单词_Awk_Sed - Fatal编程技术网

Awk 在整行中搜索模式,并在同一行中添加一个单词

Awk 在整行中搜索模式,并在同一行中添加一个单词,awk,sed,Awk,Sed,我的要求是:我有3列,我想搜索一些模式,在第2列,如果我找到了该模式,然后在同一行的开头添加特定的单词。 例如 现在我想搜索模式“boss”,并在同一行中添加“find:”在同一文件中该行的开头,其他内容应该是tact 期望输出: FOUND : abc boss 123 pqr madam 789 FOUND : def boss 456 FOUND : zxc boss 321 myb madam 345 FOUND : poi boss 234 如何使用sed或awk命令执行此操作? 提

我的要求是:我有3列,我想搜索一些模式,在第2列,如果我找到了该模式,然后在同一行的开头添加特定的单词。 例如

现在我想搜索模式“boss”,并在同一行中添加“find:”在同一文件中该行的开头,其他内容应该是tact

期望输出:

FOUND : abc boss 123
pqr madam 789
FOUND : def boss 456
FOUND : zxc boss 321
myb madam 345
FOUND : poi boss 234
如何使用sed或awk命令执行此操作? 提前谢谢。 普拉蒂克沙阿

$ cat file
abc boss 123
pqr madam 789
def boss 456
zxc boss 321
myb madam 345
poi boss 234

$ sed '/boss/s/^/FOUND: /' file
FOUND: abc boss 123
pqr madam 789
FOUND: def boss 456
FOUND: zxc boss 321
myb madam 345
FOUND: poi boss 234

$ awk '/boss/{print "FOUND: " $0;next}1' file
FOUND: abc boss 123
pqr madam 789
FOUND: def boss 456
FOUND: zxc boss 321
myb madam 345
FOUND: poi boss 234
如果要将变量转换为
sed
awd

$ echo $str
boss

$ sed "/${str}/s/^/FOUND: /" file
FOUND: abc boss 123
pqr madam 789
FOUND: def boss 456
FOUND: zxc boss 321
myb madam 345
FOUND: poi boss 234

$ awk -v key="$str" '$0~key{print "FOUND: " $0;next}1' file
FOUND: abc boss 123
pqr madam 789
FOUND: def boss 456
FOUND: zxc boss 321
myb madam 345
FOUND: poi boss 234
这可能适用于您(GNU-sed):


每行第二个字段上的图案匹配为
boss
,并在任何此类匹配之前插入
找到:

您没有尝试过任何东西吗?
图案
用于编织和被子,而不是用于软件。用
string
regexp
替换问题中的
pattern
一词,无论您的意思是什么,并澄清您是否需要部分匹配或完全匹配,以便我们可以帮助您找到正确的解决方案。这很有效!现在我该怎么做才能将模式作为变量传递?例如,我有一个变量,现在为每个p$I{想在sed'/$p/s/^FOUND://'文件中传递$p}设置I“boss-madam”。问题是如何将模式作为变量传递。“非常感谢。”PratikShah更新。请花点时间阅读
manawk
mansed
,并用谷歌搜索它们。您将找到大量的资源。请让我知道,如何使用foreach循环将模式作为变量传递?例如,我有一个变量,现在为每个j$I设置I“boss-madam”{我想在sed/$j/s/^FOUND:/“文件中传递$j}我尝试了它,但它不起作用。
$ echo $str
boss

$ sed "/${str}/s/^/FOUND: /" file
FOUND: abc boss 123
pqr madam 789
FOUND: def boss 456
FOUND: zxc boss 321
myb madam 345
FOUND: poi boss 234

$ awk -v key="$str" '$0~key{print "FOUND: " $0;next}1' file
FOUND: abc boss 123
pqr madam 789
FOUND: def boss 456
FOUND: zxc boss 321
myb madam 345
FOUND: poi boss 234
sed 's/^\S\+\s\+boss\s\+/FOUND : &/' file