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}'