Bash 使用sed或awk仅获取部分文件

Bash 使用sed或awk仅获取部分文件,bash,awk,sed,Bash,Awk,Sed,我有一个包含以下文本的文件: Directory /home/user/ "test_user" bunch of code another bunch of code 如何仅从该文件获取/home/user/part 我已经设法使用awk-F''NR==1{print$1}'file.txt来删除文件的其余部分,并且得到如下输出: $1 = 'Directory' $2 = '/home/user/' $3 = '"test_user"' 目录/home/user/ 如何将此命令更改

我有一个包含以下文本的文件:

Directory /home/user/ "test_user"
bunch of code
another bunch of code
如何仅从该文件获取/home/user/part

我已经设法使用awk-F''NR==1{print$1}'file.txt来删除文件的其余部分,并且得到如下输出:

$1 = 'Directory'
$2 = '/home/user/'
$3 = '"test_user"'   
目录/home/user/

如何将此命令更改为仅获取/home/user/part?我想让它尽可能简单。很遗憾,我无法修改此文件以添加/更改内容。

使用awk时,它应该是:

awk 'NR==1{print $2}' file.txt
将字段分隔符设置为是错误的,因为它将行拆分为以下字段:

$1 = 'Directory /home/user/'
$2 = 'test_user'
$3 = '' (empty)
默认记录分隔符为[[:space:][]+,拆分方式如下:

$1 = 'Directory'
$2 = '/home/user/'
$3 = '"test_user"'   
对于awk,它应该是:

awk 'NR==1{print $2}' file.txt
将字段分隔符设置为是错误的,因为它将行拆分为以下字段:

$1 = 'Directory /home/user/'
$2 = 'test_user'
$3 = '' (empty)
默认记录分隔符为[[:space:][]+,拆分方式如下:

$1 = 'Directory'
$2 = '/home/user/'
$3 = '"test_user"'   
添加一些grep

grep Directory file.txt|awk '{print $2}'
添加一些grep

grep Directory file.txt|awk '{print $2}'

不确定为什么要使用-F来更改分隔符。如果你去掉它,2美元就能得到你想要的

awk 'NR==1{print $2}' file.txt
当行包含/home/user而不是计数记录时,您也可以使用awk执行打印:

awk '/\home\/user\//{print $2}' file.txt

在这种情况下,如果该行被隐藏在文件中,或者如果您有多个实例,那么无论它在哪里,您都会得到每个引用的名称。

不确定为什么要使用-F,因为它会更改分隔符。如果你去掉它,2美元就能得到你想要的

awk 'NR==1{print $2}' file.txt
当行包含/home/user而不是计数记录时,您也可以使用awk执行打印:

awk '/\home\/user\//{print $2}' file.txt

在这种情况下,如果该行被隐藏在文件中,或者如果您有多个实例,那么无论它在哪里,您都可以得到每个实例的名称。

如果您的文件很大,这应该是最快的,值得注意的

awk '{print $2; exit}' file

它将打印第一行的第二个字段,并停止处理文件的其余部分。

如果文件很大,这应该是最快的,值得注意的

awk '{print $2; exit}' file

它将打印第一行的第二个字段,并停止处理文件的其余部分。

作为替代方法,您可以使用head和cut:


作为替代方案,您可以使用头部和切口:

grep是多余的,因为awk可以搜索模式。使用awk'/Directory/{print$2}'grep是多余的,因为awk可以搜索模式。使用awk'/Directory/{print$2}'