Linux 带有单个结果的Bash简单搜索脚本

Linux 带有单个结果的Bash简单搜索脚本,linux,bash,shell,Linux,Bash,Shell,我有一个脚本,可以搜索文件并显示结果 但是有一个问题,例如,当我搜索1时,会给出以下结果: 1 B C 11 D E 12 B C 13 D E 当我搜索1时,我只希望它同时显示1 11 D E 12 B C 13 D E 这可能吗 echo "$@" | sed 's/[[:space:]]/.*/g' | xargs -Ifile grep -Ei 'file' text.txt 您可以使用: grep -w "1" <filename> 不带w的输出: grep "1"

我有一个脚本,可以搜索文件并显示结果

但是有一个问题,例如,当我搜索1时,会给出以下结果:

1 B C
11 D E
12 B C
13 D E
当我搜索
1
时,我只希望它同时显示
1

11 D E
12 B C
13 D E
这可能吗

echo "$@" | sed 's/[[:space:]]/.*/g' | xargs -Ifile grep -Ei 'file' text.txt
您可以使用:

grep -w "1" <filename>
不带
w
的输出:

grep "1" abc.txt 
1
12
13
111
123
312
412
grep -w "1" abc.txt 
1
w
的输出:

grep "1" abc.txt 
1
12
13
111
123
312
412
grep -w "1" abc.txt 
1
abc.txt
的内容为:

1
12
13
111
123
312
412

您可以在grep命令中使用-w标志。请检查下面的屏幕截图


在脚本中尝试以下操作:

grep -o "\b$1\b" <file_name>

您是否尝试了
-w
选项以
grep
?您也可以使用
grep'\b1\b'
来设置单词边界。是否有一种方法可以从脚本运行此操作,以便我只调用脚本,如./script.sh 1,它会执行此操作。我更新了这个问题来说明我为什么用我做的这个表达。