1

我有一个文本文件,上面总是有不同的内容,我的测试文件是:

/home/bob/www/file

但它总是换成新行

/home/joe/www/file3

我怎样才能只提取用户的字段,没有别的,我不知道bob什么时候在文件上我不知道joe什么时候在文件上,它总是一个不同的用户名,我怎样才能将用户导出到一个新文件中使用 cat/awk/sed 或 grep ,任何类似的东西,我搜索了很多,但我没有找到结果

从我的文件 test 中,我想将 bob 提取到一个新文件中,这可能吗?在不知道要提取的单词的情况下,要告诉一些东西来提取 /slash /slash 和 /slash 之间的单词

4

4 回答 4

2

grep与 一起使用PCRE

grep -oP '(?<=/home/)[^/]+' testfile

使用awk

awk -F/ '{print $3}' testfile

使用sed

sed 's,/[^/]\+/\([^/]\+\)/.*,\1,' testfile

使用bash

while IFS='/' read -ra name; do 
  echo "${name[2]}"; 
done < testfile
于 2013-07-18T03:22:35.280 回答
1

假设用户名始终是路径的第二部分,并且路径始终是绝对的(以“/”开头)

username=$(cut -d/ -f3 < filename)
于 2013-07-18T03:29:27.647 回答
0

正则表达式

/home/([a-z]*)/www/file

将匹配有问题的行并捕获名称。我不了解 awk,所以我不能告诉你如何应用它,但也许这会帮助你找到自己的方式。

于 2013-07-18T03:05:25.930 回答
0

试试这个:awk -F"/" '{printf( "%s\n", $3) }' test > newfile。在这里,awk 正在读取“test”的输入文件,通过“/”解析,然后将第三个字段(在第二个“/”之后)打印到一个名为“newfile”的新文件中。

于 2013-07-18T03:15:30.927 回答