gpt4 book ai didi

bash - 使用 sed 更改文件中一行的位置

转载 作者:行者123 更新时间:2023-12-01 22:18:40 25 4
gpt4 key购买 nike

我想知道如何更改文件中一行的位置(最好使用 sed)。例如,考虑包含

goal identifier statement  
let statement 1
let statement 2
forall statement
other statements

我希望能够做到这一点

goal identifier statement  
forall statement
let statement 1
let statement 2
other statements

我在这里更改了 forall 线的位置,并将其放在 goal 线之后。 forallgoal 是可用于识别行的正则表达式。

最佳答案

你可以试试,移动line 4line 2 ,我要搬家line Aline B , 其中A>B

sed -n '2{h; :a; n; 4{p;x;bb}; H; ba}; :b; p' file

A<B

sed -n '2{h; d}; 4{p; x;}; p' file

在第一种情况下,你得到:移动line 4line 2

goal identifier statement
forall statement
let statement 1
let statement 2
other statements

你得到,在第二种情况下:移动line 2line 4

goal identifier statement  
let statement 2
forall statement
let statement 1
other statements

解释

sed -n '              #silent option ON
2{ #if is line 2
h #Replace the contents of the hold space with the contents of the pattern space
:a #label "a"
n #fetch the next line
4{ #if is line 4
p #print line 4
x #Exchange the contents of the hold and pattern spaces
bb #goto "b"
}
H #appends line from the pattern space to the hold space, with a newline before it.
ba #goto "a"
}
:b #Label "b"
p #print
' file

编辑

如果你想使用regex为了识别行,您可以修改第一个命令

sed -n '/goal/{p;n;h;:a;n;/forall/{p;x;bb};H;ba};:b;p' file

关于bash - 使用 sed 更改文件中一行的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41912932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com