Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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
Linux Grep命令问题_Linux_Unix_Grep - Fatal编程技术网

Linux Grep命令问题

Linux Grep命令问题,linux,unix,grep,Linux,Unix,Grep,我应该如何使用一个Unix命令打印JMT公司的名称(并且仅打印名称)?斯堪的纳维亚字母有问题吗?通过打字 grep JMT url | egrep --only-matching '[^[:digit:]]+' 我仍然有公司名称和+标记,我应该去掉 我非常感谢你的帮助,因为我对这方面还不熟悉 [Name] [Company] 1. Matti Meikäläinen TTK 36.9 2. T

我应该如何使用一个Unix命令打印JMT公司的名称(并且仅打印名称)?斯堪的纳维亚字母有问题吗?通过打字

grep JMT url | egrep --only-matching '[^[:digit:]]+'
我仍然有公司名称和+标记,我应该去掉

我非常感谢你的帮助,因为我对这方面还不熟悉

   [Name]                      [Company]

1. Matti Meikäläinen              TTK              36.9
2. Teemu Aho                      JMT              37.0  +0.1
3. Kaarna Käyrä                   JMT              37.1  +0.1
4. Maija Meheväv                  TTK              37.2  +0.1
5. Giglio Matjusha                JMT              37.3  +0.1
使用而不是
grep
,搜索文本和打印匹配行中的其他详细信息要容易得多。例如:

% echo '[Name] [Company]

Matti Meikäläinen TTK 36.9
Teemu Aho JMT 37.0 +0.1
Kaarna Käyrä JMT 37.1 +0.1
Maija Meheväv TTK 37.2 +0.1
Giglio Matjusha JMT 37.3 +0.1' | awk '$3 == "JMT" { print $1, $2 }'
Teemu Aho
Kaarna Käyrä
Giglio Matjusha
这将检查第三个“单词”是否为“JMT”,如果是,则打印第一个和第二个单词。不需要正则表达式(在这种情况下)。

使用而不是
grep
,搜索文本和打印匹配行中的其他详细信息要容易得多。例如:

% echo '[Name] [Company]

Matti Meikäläinen TTK 36.9
Teemu Aho JMT 37.0 +0.1
Kaarna Käyrä JMT 37.1 +0.1
Maija Meheväv TTK 37.2 +0.1
Giglio Matjusha JMT 37.3 +0.1' | awk '$3 == "JMT" { print $1, $2 }'
Teemu Aho
Kaarna Käyrä
Giglio Matjusha

这将检查第三个“单词”是否为“JMT”,如果是,则打印第一个和第二个单词。不需要正则表达式(在这种情况下)。

将输出想象为一个文件(用于抑制奇数符号)

所以解决办法是

$> cat ./text | grep --perl-regexp --only-matching ".*(?=JMT)"
Teemu Aho 
Kaarna Käyrä 
Giglio Matjusha 
如果你想去掉名字前面的号码:

$> cat ./text | grep --perl-regexp --only-matching "[^0-9]*(?=JMT)"
Teemu Aho 
Kaarna Käyrä 
Giglio Matjusha 

我们在这里使用的是来自perl的regexp扩展,从中我们得到了那些前瞻操作符(有一个很好的示例,其中包含一些关于它的信息)

将输出想象成一个文件(用于抑制奇数符号)

所以解决办法是

$> cat ./text | grep --perl-regexp --only-matching ".*(?=JMT)"
Teemu Aho 
Kaarna Käyrä 
Giglio Matjusha 
如果你想去掉名字前面的号码:

$> cat ./text | grep --perl-regexp --only-matching "[^0-9]*(?=JMT)"
Teemu Aho 
Kaarna Käyrä 
Giglio Matjusha 

我们在这里使用的是来自perl的regexp扩展,从中我们得到了那些前瞻操作符(有一个很好的示例,其中包含一些关于它的信息)

尝试将
-o
标志用于grep,以便仅打印匹配项(如
--仅匹配
),并输入perl regex的
-p
标志:

grep -o -P '\b[^\d]+\bJMT\b' <your_file_name>

这确实假设“JMT”是公司名称中的最后一个词。如果不只是在末尾添加一个
[^\d+]\b
\b
确保不包含尾随/前导空格)。

尝试使用
-o
标记到grep来打印匹配项(比如
--仅匹配
),并输入perl regex的
-p
标记:

grep -o -P '\b[^\d]+\bJMT\b' <your_file_name>

这确实假设“JMT”是公司名称中的最后一个词。如果不只是在末尾添加一个
[^\d+]\b
\b
确保不包含尾随/前导空格)。

它工作得很好,但是我该如何去掉名称前面的数字呢?将该条件添加到regexp:
“[^0-9]*(?=JMT)”
这个cat命令是如何工作的?我可以只键入$>cat my url | grep--perl regexp--仅匹配“*(?=JMT)”吗?grep可以获取输入流并对其进行处理(如
echo“ab”| grep-o“a”
返回a)。grep还可以将文件作为参数。因此,您应该重定向输出(可能是文件输出或某些命令输出)grep-wipe
。它工作得很好,但我应该如何去除名称前面的数字?将该条件添加到regexp:
“[^0-9]*(?=JMT)”
这个cat命令如何工作?我可以只键入$>cat-my-url吗?grep--perl-regexp--仅匹配“*(?=JMT)?grep可以获取输入流并对其进行处理(如
echo)“ab”| grep-o“a”
返回a)。grep还可以将文件作为参数。因此,您应该重定向输出(可能是文件输出或某些命令输出)grep-wipe
|
。只要没有只有一个单词或三个或更多单词的公司名称,这种方法就可以很好地工作。只要没有只有一个单词或三个或更多单词的公司名称,这种方法就可以很好地工作。