使用 Bash 脚本查找/替换文本文件中的特殊字符

使用 Bash 脚本查找/替换文本文件中的特殊字符

我正在寻找一些关于创建脚本来查找和替换文本文件中的特殊字符的指导。

我已经想出了这段伪代码,但填补空白有点困难:

  • 查找换行符并替换为空格。
  • 查找CP并用换行符替换。
  • 查找Mr. Mime(带空格)并替换为Mr.Mime(不带空格)
  • 查找标签并替换为空格
  • 查找双倍空格并替换为单倍空格
  • 查找%并替换为空(也就是将其省略)
  • 找到“ ATK DEF STA IV ”并替换为空格

“查找”代表“查找所有实例”。

我一直在研究sed,但似乎找不到如何处理这些特殊字符的方法。任何想法都非常感谢。

编辑:正如此处所要求的,输入的一小段:

CP 1593
SSS
Sudowoodo♀
ATK     DEF     STA     IV
15  15  15  100.0%
counter
rock slide
CP 1262
SSS
Tangrowth♀4
ATK     DEF     STA     IV
15  15  15  100.0%
vine whip
grass knot
CP 1077
SSS
Mr. Mime♀
ATK     DEF     STA     IV
15  15  15  100.0%
confusion
psychic

预期输出:

1593 SSS Sudowoodo♀ 15 15 15 100.0 counter rock slide
1262 SSS Tangrowth♀4 15 15 15 100.0 vine whip grass knot
1077 SSS Mr.Mime♀ 15 15 15 100.0 confusion psychic

答案1

sed 文本处理严格以行为导向,因此用 sed 替换换行符相当困难。
未经测试:

cat file |
  tr '\n\t' '  ' |
  sed -e 's/ CP /\n/g' \
      -e 's/Mr[.] Mime/Mr.Mime/g' \
      -e 's/   */ /g' \
      -e 's/%//g'

相关内容