我有一个文本文件,它总是不同的内容,我的测试文件是:
/home/bob/www/file
但它总是变为像
这样的新行/home/joe/www/file3
我如何只提取用户的字段,没有别的,我不知道什么时候bob在文件上我不知道当joe在文件上时,它总是一个不同的用户名,我怎样才能将用户导出到使用cat / awk / sed或grep的新文件,任何类似的东西,我搜索了很多,但我没有找到结果
从我的文件测试中,我想将bob提取到一个新文件中,是否可行?不知道要提取的单词,要告诉你在/ slash / slash和/ slash之间提取单词
答案 0 :(得分: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
答案 1 :(得分:1)
假设用户名始终是路径的第二个组成部分,并且路径始终是绝对路径(以“/”开头)
username=$(cut -d/ -f3 < filename)
答案 2 :(得分:0)
正则表达式
/home/([a-z]*)/www/file
将匹配相关行并捕获名称。我不是awk,所以我不能告诉你如何应用这个,但也许这会帮助你找到自己的方式。
答案 3 :(得分:0)
试试这个:awk -F"/" '{printf( "%s\n", $3) }' test > newfile
。在这里,awk正在读取“test”的输入文件,用“/”解析,然后将第3个字段(在第二个“/”之后)打印到一个名为“newfile”的新文件中。