我想将文件中的路径移动到文件顶部。每行列出 1 个路径。如何/someplace/2nd/
仅使用命令行移动到顶部?
/someplace/1st/
/someplace/2nd/
/someplace/3rd/
所以我最终
/someplace/2st/
/someplace/1nd/
/someplace/3rd/
答案1
由于您使用了vim
标签,我首先假设您指的是 Vim 的命令行。如果是这样,那么此命令将执行此操作。
:g/^\/someplace\/2nd\/$/m0
其中最后一个字符是零。参见
:help :g
:help :m
如果您指的是 shell 命令行,您可以使用vim
此命令来编辑您的文件。
vim -c 'g/^\/someplace\/2nd\/$m0' -cwq yourfile
看
:help -c
:help :wq
答案2
以非交互方式编辑文件的传统方式是使用ed
:
(echo '/^\/someplace\/2nd\/$/m0'; echo w; echo q ) | ed $file
ed
这将向文件上运行的文本编辑器发送 3 个命令$file
:
/regular_expression/m0
:搜索匹配的行regular_expression
并将其移动到位置 0w
:写入文件q
: 辞职
答案3
{
sed -n '/^\/someplace\/2nd\//{p;q}' file
sed '/^\/someplace\/2nd\//d' file
} > temp && mv temp file
答案4
这可能对你有用(GNU sed):
sed -i '1,\|/someplace/2nd/|{1{h;d};//!{H;d};G}' file