Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Bash 在每一行中查找特定单词并显示会导致unix shell脚本编写_Bash_Shell_Unix - Fatal编程技术网

Bash 在每一行中查找特定单词并显示会导致unix shell脚本编写

Bash 在每一行中查找特定单词并显示会导致unix shell脚本编写,bash,shell,unix,Bash,Shell,Unix,我想检查像raj或rohit(忽略大小写)这样的单词是否作为独立单词出现在文件的每一行中。如果找到匹配项,则传递“找到” 如果没有,则在另一个文件中“找不到”。所以每行都必须有条目 范例 输入文件说明(Input.txt) 输出文件(例如file.out) #!awk-f { 打印/\/?“已找到”:“未找到” } #!awk-f { 打印/\/?“已找到”:“未找到” } 使用awk: awk -v s1='(^| )raj( |$)' -v s2='(^| )rohit( |$)' '{

我想检查像
raj
rohit
(忽略大小写)这样的单词是否作为独立单词出现在文件的每一行中。如果找到匹配项,则传递“找到” 如果没有,则在另一个文件中“找不到”。所以每行都必须有条目

范例

输入文件说明(
Input.txt

输出文件(例如
file.out

#!awk-f
{
打印/\/?“已找到”:“未找到”
}
#!awk-f
{
打印/\/?“已找到”:“未找到”
}
使用awk:

awk -v s1='(^| )raj( |$)' -v s2='(^| )rohit( |$)' '{
          print ($0~s1 || $0~s2)? "found": "not found"}' file
found
found
found
not found
found
not found
使用awk:

awk -v s1='(^| )raj( |$)' -v s2='(^| )rohit( |$)' '{
          print ($0~s1 || $0~s2)? "found": "not found"}' file
found
found
found
not found
found
not found

使用支持
\y
(和
\
)的
GNU awk
)匹配单词边界:


使用支持
\y
(和
\
)的
GNU awk
)匹配单词边界:


+1用于GNU awk的
info;您指的是哪种
nawk
?在一些平台上,例如Ubuntu 12.04,
nawk
仅仅是
gawk
的符号链接。至于为什么它是
\y
,而不是
\b
:“在其他GNU软件中,单词边界运算符为'\b'。但是,这与awk语言将“\b”定义为退格相冲突,因此gawk使用了不同的字母。另一种方法是在GNU操作符中需要两个反斜杠,但这被认为太令人困惑了。”——@mklement0嘿,你说得对……我删除了
nawk
引用,但添加了
busybox
awk
实现,它也支持
\
(但似乎不支持
\y
)。感谢您的更新;我冒昧地删除了GNU awk信息的
+1;您指的是哪个
nawk
?在一些平台上,例如Ubuntu 12.04,
nawk
仅仅是
gawk
的符号链接。至于为什么它是
\y
,而不是
\b
:”在其他GNU软件中,单词边界运算符为“\b”。但是,这与awk语言将“\b”定义为退格相冲突,因此gawk使用了不同的字母。另一种方法是在GNU操作符中需要两个反斜杠,但这被认为太令人困惑了。”——@mklement0嘿,你说得对……我删除了
nawk
引用,但添加了
busybox
awk
实现,它也支持
\
(但似乎不支持
\y
)。感谢您的更新;我冒昧地删除了
问题已解决…非常快速和正确的响应。问题已解决…非常快速和正确的响应。
awk -v s1='(^| )raj( |$)' -v s2='(^| )rohit( |$)' '{
          print ($0~s1 || $0~s2)? "found": "not found"}' file
found
found
found
not found
found
not found
$ awk '!/\yraj\y/&&!/\yrohit\y/{printf "Not "} {print "Found"}' test.txt
Found
Found
Found
Not Found
Found
Not Found

$ awk '!/\<raj\>/&&!/\<rohit\>/{printf "Not "} {print "Found"}' test.txt
Found
Found
Found
Not Found
Found
Not Found
$ busybox awk '!/\<raj\>/&&!/\<rohit\>/{printf "Not "} {print "Found"}' test.txt
Found
Found
Found
Not Found
Found
Not Found