Regex 如何在bash中提取文件每列的子字符串?

Regex 如何在bash中提取文件每列的子字符串?,regex,bash,sed,extract,Regex,Bash,Sed,Extract,给定一个名为file的文本文件,如下所示: AAA 3/4 2/2 3/5 BBB 3/4 2/3 3/3 6/7 CCC 4/4 7/9 我应该怎么做才能得到每个分数的分子?例如: AAA 3 2 2 BBB 3 2 3 6 CCC 4 7 多谢各位 $> cat text AAA 3/4 2/2 3/5 BBB 3/4 2/3 3/3 6/7 CCC 4/4 7/9 这个想法是匹配任何分数,从每个分数中只得到分子。所以,分数是(数字)/(数字)。通过分组,你很容易得到你想

给定一个名为file的文本文件,如下所示:

AAA 3/4 2/2 3/5 
BBB 3/4 2/3 3/3 6/7 
CCC 4/4 7/9
我应该怎么做才能得到每个分数的分子?例如:

AAA 3 2 2
BBB 3 2 3 6
CCC 4 7
多谢各位

$> cat text
AAA 3/4 2/2 3/5 
BBB 3/4 2/3 3/3 6/7 
CCC 4/4 7/9
这个想法是匹配任何分数,从每个分数中只得到分子。所以,分数是(数字)
/
(数字)。通过分组,你很容易得到你想要的

$> sed -r -e 's/([0-9]*)\/([0-9]*)/\1/g' ./text
AAA 3 2 3 
BBB 3 2 3 6 
CCC 4 7
尝试使用,或一个程序


编辑:根据注释删除UOOC。

这可能适用于您:

sed 's/\/[0-9]*//g' file
AAA 3 2 3 
BBB 3 2 3 6 
CCC 4 7

为什么不干脆
sed/[0-9]\{1,\}!!g'文本
?只是为了可读性。我不确定OP是否真的熟悉
sed
@Johnsyweb谢谢您的回复。事实上,我不熟悉
sed
,但我会设法弄明白这一点。@БМММППМММЙМАЛПБССССb为什么不在括号前加反斜杠?像
sed-r-e's/\([0-9]*\)\/\([0-9]*\)/\1/g./text
@БМММСМСЙМАЛСССССССB还有,'-r'和
-e
在这里有什么用?谢谢。谢谢你的回复。这确实有效,但我不太理解代码。您能解释一下吗?这将查找正斜杠
\/
的倍数(即
g
标志)(需要用反斜杠引用),后跟零或更多数字<代码>[0-9]*并将其替换为零
/