我有一个命令 cat 文件名 | awk 'match($0,/regext_patt/,a) {print a[1] ;exit;}' 我想使用 scala sys.process 运行这个命令。这里的“文件名”和“regex_patt”将来自 scala 定义的变量。到目前为止,我能够管理这个:
val extract = (s"cat $file" #| Process(Seq("awk", "match($0,/.+Country=([^;]*);.+/,a) {print a[1] ;exit(0);}"))).!!
这里的问题是正则表达式模式,它是硬编码的,我无法解决如何在 Seq 进程构建器中使用 scala 变量。
我试过了,但它给出了错误:
val reg:String = ".+Country=([^;]*);.+"
val extract= (s"cat $file" #| Process(Seq("awk", "match($0,/",reg,"/,a) {print a[1] ;exit(0);}"))).!
这里的错误是:
awk: match($0,/
awk: ^ unexpected newline or end of string
awk: cmd. line:1: match($0,/
awk: cmd. line:1: ^ unexpected newline or end of string
请帮助我在这里缺少什么关键的东西来解决这个问题。提前致谢