Sam*_*ynn 2 command-line bash scripts text-processing
我有这个
ciscoFlashCopyStatus 对象类型
语法整数
{
copyOperationPending(0),
copyInProgress(1),
复制操作成功 (2),
copyInvalidOperation (3),
copyInvalidProtocol (4),
copyInvalidSourceName (5),
copyInvalidDestName (6),
copyInvalidServerAddress (7),
copyDeviceBusy (8),
copyDeviceOpenError (9),
复制设备错误(10),
copyDeviceNotProgrammable (11),
copyDeviceFull (12),
copyFileOpenError (13),
copyFileTransferError(14),
copyFileChecksumError(15),
copyNoMemory (16),
copyUnknownFailure(17),
复制无效签名(18)
}
MAX-ACCESS 只读
状态电流
我想做的事
一些命令将每个名称复制VARIABLE到名为的数组中var
所以输出的例子
回声“${var[0]}
复制操作待处理
回声“${var[1]}
复制进度
回声“${var[2]}
复制操作成功
等等..
任何想法我怎么能做到这一点?
注意这是一个类似的问题,我之前问过一些事情发生了什么变化,我不能再使用旧问题中提供的相同解决方案。
使用grep:
mapfile -t var < <(grep -Po '^\s+\K[^ ]+(?= ?\(\d+\),?$)' file.txt)
Run Code Online (Sandbox Code Playgroud)
grep -P 将使用 PCRE(Perl 兼容正则表达式)
grep -o 将打印该行的匹配部分
^\s+\K将匹配以空格开头的行并\K丢弃匹配
[^ ]+ 将匹配我们想要的部分
(?= *\(\d+\))是零宽度正前瞻模式,确保零或一个空格后跟(,一位或多位数字,)以及,在我们想要的匹配后的末尾零或一个
mapfile 是一个内置的shell,用于创建数组。
$ mapfile -t var < <(grep -Po '^\s+\K[^ ]+(?= ?\(\d+\),?$)' file.txt)
$ echo "${var[0]}"
copyOperationPending
$ echo "${var[1]}"
copyInProgress
$ echo "${#var[@]}"
19
Run Code Online (Sandbox Code Playgroud)