Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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 切口-d未按预期工作_Bash - Fatal编程技术网

Bash 切口-d未按预期工作

Bash 切口-d未按预期工作,bash,Bash,我正在尝试解析终端中lsof实用程序的结果 lsof -n -i | grep 192.168.0.105:58281 | cut -d" " -f2 输出不是返回以空格分隔的第二列,而是一条空行。 我缺少什么?cut将每个空格视为单独的标记。所以它打印第一列和第二列之间的空间 您也可以使用awk: lsof -n -i | grep 192.168.0.105:58281 | awk '{print $2}' cut将每个空格视为单独的标记。所以它打印第一列和第二列之间的空间 您也可以使用

我正在尝试解析终端中lsof实用程序的结果

lsof -n -i | grep 192.168.0.105:58281 | cut -d" " -f2
输出不是返回以空格分隔的第二列,而是一条空行。
我缺少什么?

cut
将每个空格视为单独的标记。所以它打印第一列和第二列之间的空间

您也可以使用
awk

lsof -n -i | grep 192.168.0.105:58281 | awk '{print $2}'

cut
将每个空格视为单独的标记。所以它打印第一列和第二列之间的空间

您也可以使用
awk

lsof -n -i | grep 192.168.0.105:58281 | awk '{print $2}'

lsof
的输出列由一个或多个空格分隔。因此,您需要“挤压”(
-s
-挤压重复
)它们,以便
剪切
能够挑出列

这可以通过简单地将
tr
添加到管道中来实现:

lsof -n -i |tr -s ' ' | grep  ...
但是
awk
可能是比
cut
/
tr
更好的解决方案,因为它能够更智能地解析字段。此外,您还可以使用Awk正则表达式消除
grep
(它没有按照您的意思处理
,而没有
\
-转义):

lsof -n -i | awk '/192\.168\.0\.105:58281/ {print $2}'

lsof
的输出列由一个或多个空格分隔。因此,您需要“挤压”(
-s
-挤压重复
)它们,以便
剪切
能够挑出列

这可以通过简单地将
tr
添加到管道中来实现:

lsof -n -i |tr -s ' ' | grep  ...
但是
awk
可能是比
cut
/
tr
更好的解决方案,因为它能够更智能地解析字段。此外,您还可以使用Awk正则表达式消除
grep
(它没有按照您的意思处理
,而没有
\
-转义):

lsof -n -i | awk '/192\.168\.0\.105:58281/ {print $2}'

代码中的缺陷是,
lsof
输出多个空格作为分隔符,
cut
将所有这些空格视为不同的列。
要实现您想要的,您可以使用
tr-s'
删除冗余空间。所以你可以用这样的东西:

lsof -n -i | grep 192.168.0.105:58281 | tr -s " " | cut -d" " -f2

代码中的缺陷是,
lsof
输出多个空格作为分隔符,
cut
将所有这些空格视为不同的列。
要实现您想要的,您可以使用
tr-s'
删除冗余空间。所以你可以用这样的东西:

lsof -n -i | grep 192.168.0.105:58281 | tr -s " " | cut -d" " -f2

-d
之间不应该有空格吗?
?看看你想要的东西。不,空间里没有必要。你确定第一部分(lsof-n-i和grep)会返回什么吗?当我运行你的代码(使用调整后的grep)时,我确实得到了一些输出。我认为
-f
2
之间应该有一个空格。我发现
-d
之间不应该有空格吗?
?看看你想要的东西。不,空间里没有必要。你确定第一部分(lsof-n-i和grep)会返回什么吗?当我运行你的代码(使用调整后的grep)时,我确实得到了一些输出。我认为在
-f
2
之间应该有一个空格。我发现了一些东西