gpt4 book ai didi

shell - 可以为我提供一个简单的搜索和替换脚本吗?

转载 作者:行者123 更新时间:2023-12-04 05:59:29 24 4
gpt4 key购买 nike

是否可以制作一个(Perl 或 Mac OS X 上运行的任何东西)脚本来转换

\section{long text}
\sectionmark{short text}


\section[long text]{long text\sectionmark{short text}}

或替代
\section{long text}[short text]

我无法确保 long text 中没有换行符或者如果 \section 之间有中断和 \sectionmark .

此问题与讨论的问题有关 here一个 TeX.SX。

最佳答案

awk '/\\section{long text}/ { oldline=$0
getline
gsub("{","[",oldline)
gsub("}","]",oldline)
print gensub("(.*)\\[(.*)\\]","\\1[\\2]{\\2","g",oldline) $0 "}"
getline
}
1' INPUTFILE

如果 long text 中没有换行符,将为您执行此操作并且 \section 之间没有空行和 \sectionmark .如果你有任何这些,你仍然可以修改它。

所以回答你的问题:是的,这是可能的。

更新

这是一个有效的解决方案,带有 awk :
awk '/\\section{/ { oldline=$0
if ( oldline ~ /}/ ) {
lt=gensub(".*{([^}]+)}.*","\\1","g",oldline)
} else {
lt=gensub(".*{(.*)","\\1","g",oldline)
getline tmp
while ( tmp !~ "}" ) {
lt=lt "\n" tmp
getline tmp
}
lt=lt "\n" gensub("}.*","","g",tmp)
}
getline
while ( $0 !~ /\\sectionmark/ ) {
getline
}
printf("\\section[%s]{%s%s}\n",lt,lt,$0)
getline
}
! /\\section{/ { print }' INPUT_FILE

备注 : 如果在 long text} 之间出现任何内容,它不会处理和 \sectionmark例如。:
\section{long text}**THIS TEXT WILL BE SKIPPED!!**
\sectionmark{short text}

您可以在 ACTION HERE 中看到它!

如果你想去掉 long text 中的新行只需更换每个 "\n"" "在脚本中。

关于shell - 可以为我提供一个简单的搜索和替换脚本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9096695/

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