小编Sha*_*n K的帖子

任何人都可以解释"sed-regex here"中发生的事情

我正在使用正则表达式练习sed命令,但结果并不像预期的那样.我在mac Sierra上使用终端.这是输入数据:

Mark watermellons 12
Robert pears 4
Terry oranges 9
Lisa peaches 7
Susy oranges 12
Mark grapes 39
Anne mangoes 7
Greg pineapples 3
Oliver rockmellons 2
Betty limes 14
Run Code Online (Sandbox Code Playgroud)

我正在尝试交换第一列和第二列.我使用了这个命令:

sed 's/\(.+\) \(.+\) /\2 \1/ ' file.txt
Run Code Online (Sandbox Code Playgroud)

此命令返回相同的输入.但是当我使用时,

sed 's/\(.*\) \(.*\) /\2 \1 /' file.txt
Run Code Online (Sandbox Code Playgroud)

列正在交换.为什么"+"不匹配,因为每行至少有一个字符.

另外,当我使用时

sed 's/\(.*\) \(.*\)/\2 \1 /' file.txt 
Run Code Online (Sandbox Code Playgroud)

第一个括号是捕获前两列,第二个是最后一列,为什么第一个括号没有捕获第一列?

regex bash sed

4
推荐指数
1
解决办法
67
查看次数

标签 统计

bash ×1

regex ×1

sed ×1