我有一个文件,其中包含如下文字:
Directory /home/user/ "test_user"
bunch of code
another bunch of code
如何从此文件中仅获取/home/user/
部分?
我设法使用awk -F '"' 'NR==1{print $1}' file.txt
来删除文件的其余部分,我就像这样输出:
Directory /home/user/
如何更改此命令以仅获取/home/user/
部分?我想尽量简单。不幸的是,我无法修改此文件来添加/更改内容。
答案 0 :(得分:5)
如果您的文件很大,这应该是最快的,明显的
awk '{print $2; exit}' file
它将打印第一行的第二个字段并停止处理文件的其余部分。
答案 1 :(得分:2)
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"'
答案 2 :(得分:1)
作为替代方案,您可以使用head
和cut
:
$ head -n 1 file | cut -d' ' -f2
答案 3 :(得分:0)
不确定为什么使用SELECT p.*, a.path
FROM db_products p INNER JOIN
db_assets a
ON a.guid = p.guid
WHERE p.pcId = 1 AND
FIND_IN_SET(:locationId, p.locationId) > 0
ORDER BY p.id;
更改分隔符。如果你删除它,那么-F"
将为你提供你想要的东西。
$2
当行包含awk 'NR==1{print $2}' file.txt
而不是计算记录时,您还可以使用awk
执行print
:
/home/user
在这种情况下,如果该行被隐藏在文件中,或者如果您有多个实例,则无论在何处都会获得该名称。
答案 4 :(得分:-3)
添加一些grep
grep Directory file.txt|awk '{print $2}'