gpt4 book ai didi

regex - Perl:如何在 linux 中获取模式之间的线条

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:56 25 4
gpt4 key购买 nike

我有这样一个文件

number: string(200)
issueDate: datetime
expiryDate: datetime
file_path: string(200)
filename: string(200)
description: text

我在 perl 中使用它来获得输出结果

FIELDS="number: string(200) issueDate: datetime expiryDate: datetime file_path: string(200) filename: string(200) description: text"

这是通过这个命令完成的

perl -plne '$_ = "FIELDS=\""."$_"如果 $.== 1; $\= "";$_ = "\""."$_"如果eof'文档.txt

现在我有了这样的完整文件

[entity]
JOHN

[BUNDLE]
mybundle

[FIELDS]
number: string(200)
issueDate: datetime
expiryDate: datetime
file_path: string(200)
filename: string(200)
description: text

现在我希望像这样在单独的行中输出到终端

ENTITY = JOHN
BUNDLE = Mybundle
FIELDS="number: string(200) issueDate: datetime expiryDate: datetime file_path: string(200) filename: string(200) description: text"

基本上像 ENTITY、BUNDLE 这样的变量 NAME,它应该从文件中获取

我该怎么做

最佳答案

perl -l -00pe '$q = y|\n\r[]| |d >3 && q("); s|(\S+)\s*|$1 = $q|; $_.= $q' file

输出

entity = JOHN
BUNDLE = mybundle
FIELDS = "number: string(200) issueDate: datetime expiryDate: datetime file_path: string(200) filename: string(200) description: text"
  • -l 在输入时截断换行符并在使用 print
  • 时添加它
  • -00 读取段落中的输入(这些由两个或多个换行符终止)
  • y|\n\r[]| |d 用空格替换换行符,删除 \r[] 个字符,并返回更改的字符数
  • 因此只有当超过 3 个字符被替换时,$q 才被分配 " 字符(用于 FIELDS 条目)
  • s||| 替换采用第一个非空格字符(实体、包、字段),并在它们之后插入 = $q

关于regex - Perl:如何在 linux 中获取模式之间的线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21773664/

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