我没有得到命令sed 's/^.*\(.\{4\}\)$/\1/'
它做了什么。如果有人可以为每个角色解释我会很好,我可以很好地理解它。我现在只使用sed并且现在只学习它。
答案 0 :(得分:1)
你有两件事情在进行,理解sed
并理解传递给sed替换命令的正则表达式。
让我们从over all命令开始:
sed 's/^.*\(.\{4\}\)$/\1/'
^ ^ ^ ^
| | | |- what you want to replace found text with
| | |
| | |- what you're looking for
| |
| |- tell sed you want to substitute the text we find
| between the first two '/' with the contents between
| the last two '/'
|
|- call the sed application
接下来是理解正则表达式。 https://regex101.com/是一个很好的资源。首先,让我们看一下正则表达式:
^.*\(.\{4\}\)$
你通过shell发送这个,所以有一些shell转发。让我们删除shell转义以查看真正的正则表达式:
^.*(.{4})$
现在这一点有点清楚了。这个正则表达式:
^
.*
(.{4})$
.
捕获任何角色{4}
四次$
锚定在行尾最后,我们有sed命令的/\1/
部分。这告诉sed将^.*(.{4})$
中找到的内容替换为(.{4})$
创建的捕获组中找到的所有内容。
所以基本上,这个命令用一行中找到的最后四个字符替换文件中的每一行。