我正在使用正则表达式练习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)
第一个括号是捕获前两列,第二个是最后一列,为什么第一个括号没有捕获第一列?