我的外壳有问题,我尝试在很长的字符串中获取一些特定的字符串。
字符串的格式为:
Something(first:test, second:test2, third:test4, fourth:test4, fifth(Field(test:1, test2:test2,...)), Any1:test1, Any2:test3.
我想获取first
,third
和Any1
之后的字符串。我可以很容易地用,
拆分并将其作为数组值,但是我无法预测Any1
的位置,因此我必须检测“ Any1
”值。
我该怎么做?
答案 0 :(得分:2)
Multichar RS
可能无法在所有awk(*)中都起作用,但是:
$ awk -v RS="[(,] *" ' # record split at all the right places
BEGIN {
a["first"];a["tird"];a["Any1"] # define the keywords we are interested in
}
split($0,b,":") && (b[1] in a) { # split, match and score
print b[2]
}' file
test
test4
test1
*)可以与GNU awk,mawk和Busybox awk一起使用,但不适用于bwk awk。
答案 1 :(得分:0)
上述问题并未对解决方案施加条件或约束。另一方面,它确实提到了外壳程序(“我的外壳程序有问题”)。这是仅使用几个标准Linux实用程序的shell(bash)解决方案:grep和cut。 (但是请注意,我们假设-g开关在grep中可用,虽然在当今的Linux上似乎相当普遍,但这并不是所有平台的有效假设。)
Remove-Item -Recurse