我想写一个脚本作为任何名称作为参数,并打印路径列表
到具有该名称的人的主目录。
我是脚本新手。有没有简单的方法可以使用awk
或egrep
命令执行此操作?
示例:
$显示名称jakub anna(作为参数)
/home/users/jakubo
/home/students/j_luczka
/home/students/kubeusz
/home/students/jakub5z
/home/students/qwertinx
/home/users/lazinska
/home/students/annalaz
这是我朋友的代码,但我必须以不同的方式编写它,并且必须像此代码一样简单
#!/bin/bash
for name in $@
do
awk -v n="$name" -F ':' 'BEGIN{IGNORECASE=1};$5~n{print $6}' /etc/passwd | while read line
do
echo $line
done
done
答案 0 :(得分:0)
可以使用简单的awk
脚本查找匹配的名称。
名称列表可以作为空格分隔的列表传递给awk,它将构成(在BEGIN部分中)组合模式(例如'(names | jakub | anna)')。该模式用于测试密码文件的用户名列($ 5)。
#! /bin/sh
awk -v "L=$*" -F: '
BEGIN {
name_pat = "(" gensub(" ", "|", "g", L) ")"
}
$5 ~ name_pat { print $6 }
' /etc/passwd
答案 1 :(得分:-1)
由于目前总体上这个问题尚不清楚,所以这只是一段较长的评论,而只是部分答案。
有一个简单的简化,因为示例代码包括:
... | while read line
do
echo $line
done
上面|
之后和包括echo $line
所示的所有代码都是不必要的,并且什么也不做(例如UUoC),因此应将其删除。 (实际上,$line
带有未引号的class A
{
...
protected:
static std::mutex someMutex;
}
会删除格式和重复的空格,但这与手头的任务无关,因此我们可以说上面的代码什么都不做。)