我有类似的东西
dsadjakldjska
safdsfdsfsf
fdsfsf**STGN**fdsfsd
fdsfkjldsf
fdsff
fdsfs**IRV**fdsfs
我想要得到
dsadjakldjska
safdsfdsfsf
fdsfkjldsf
fdsff
fdsfsf**STGN**fdsfsd
fdsfs**IRV**fdsfs
但仅限于行间隔(例如第 40000 行直到文件末尾)(将包含 STGN 的行移到其下一个 IRV 的正上方)
知道我该如何做到这一点,或者是否有比 sed 更好的替代方案?
答案1
awk 'NR < 40000 {print; next}
/\*\*STGN\*\*/ {line = $0; next}
/\*\*IRV\*\*/ && line {print line; line=""}
{print}'
和sed
:
sed -e '40000,$!b' -e '/\*\*STGN\*\*/{h;d;}' -e '/\*\*IRV\*\*/{x;/./p;s/.*//;x;}'
(他们假设 STGN 发生前IRV)。