所以今天我已经尝试使用sed获取以下行中的用户名。
nesomplefore,Aip1seshoh,女,女士,Siri,Rosberg,870 Maxwell Farm Road,Fredericksburg,VA,22408,,540-222-0054,3 / 24/48,白羊座,制图师
我已经成功地使用grep完成了它,因为我设法从这里的另一篇文章中复制并粘贴,但我没有运气与sed。
有人可以解释一下grep正则表达式以及如何使用sed做同样的事情吗?
grep -oP "^([^,]*\,){0}\K[^,]*"
我希望能够管道正则表达式的结果,以便动态添加大量用户。请不要将我推荐给link,因为我尝试按照sed和其他人的说明进行操作,并且不了解其中的任何内容。
答案 0 :(得分:1)
不确定。如果我们将您的样本行放入名为'test.txt'的文件中,则以下工作正常:
sed -e 's/^\([^,]*\),.*/\1/' test.txt
以下是它的说法:
s
- 搜索/替换
/^\([^,,]*\),.*/
- 从行的开头(^
)搜索,为任何非逗号([^,]*
)字符创建后向引用(转义括号)。收尾参考标记之外的,.*
捕获线的其余部分。
/\1/
- 将匹配的字符串替换为存储的后引用(用户名)
答案 1 :(得分:0)
你不能告诉我们"用户名"出现在您的示例输入中,也没有向我们展示您的预期输出,因此我不知道您想要哪个字段,但您想要的工具是cut
,而不是sed
:
$ echo 'nesomplefore,Aip1seshoh,female' | cut -d, -f1
nesomplefore
$ echo 'nesomplefore,Aip1seshoh,female' | cut -d, -f2
Aip1seshoh
答案 2 :(得分:0)
这听起来像是一个新的作业,请在课堂上注意,因为我们不是你的导师。也不要使用特定的文件名和位置,因为它会带来安全问题......您将在课堂上学习。