对于 shell 脚本,我需要从文件中获取用户的密码,该文件有一行,其中包含 4 个参数的值,如下所示。
*:*:*:test:test
我想单独获取第三列和第四列(不包括冒号(:
))并将其传递给另一个变量。
答案1
你可以使用类似的东西:
VARIABLE=$(awk -F\: '{print $4}' input_file)
这会将第四个参数分配给名为的变量VARIABLE
答案2
假设没有明确强制使用awk
,请使用 Bash 功能来避免使用外部进程:
IFS=':' read _ _ myCol3 myCol4 _ < myFile
这_
是一个有效的变量名,但通常将其用作丢弃点。最后一个_
获得任何额外的字段。
我注意到您的示例数据有五个值,而不是您所说的 4 个。
编辑:要设置从文件中提取的多个数组值(在本例中为我的 passwd 文件的第 11 行):
$ myArray+=( $( awk < /etc/passwd '-F:' 'NR == 11 { print $1, $3, $6; }' ) )
$ declare -p myArray
declare -a myArray=([0]="uucp" [1]="10" [2]="/var/spool/uucp")
$ echo "${myArray[1]}"
10