小编phi*_*ogg的帖子

Perl:如何在分组变量后插入数字?

我在Perl one liner中有以下替换:

perl -pi.bak -e 's/(.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t)/$123424977\t/g if $. <= 200'
Run Code Online (Sandbox Code Playgroud)

问题是我想在分组正则表达式捕获的文本之后插入数字23424977 (.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t.*?\t).

但是Perl认为我指的是团队$ 123424977!如何告诉Perl我想要组$ 1并在此之后插入文本23424977?

regex perl

3
推荐指数
1
解决办法
116
查看次数

初学者调用Perl子例程

我正在尝试自学Perl,我到处寻找可能是一个非常简单的问题的答案.我已经定义了一个子程序,我调用它来计算单词中的字母数.如果我这样写出来:

 $sentence="This is a short sentence.";

 @words = split(/\s+/, $sentence);

 foreach $element (@words) {
     $lngths .= length($element) . "\n";
 }
 print "$lngths\n";
Run Code Online (Sandbox Code Playgroud)

然后它就像一个魅力.但是,如果我将其包装到子例程中,则拆分不会拆分输入,而是将整个句子计为单个输入.这是我如何定义子程序:

sub countWords {
    @words = split(/\s+/, @_);
    foreach $element(@words) {
        $lngths .= length($element) . "\n";
    }
    return $lngths;
}
Run Code Online (Sandbox Code Playgroud)

从我阅读过的所有页面和我所咨询过的文本中,这应该可行,但事实并非如此.

提前致谢!

perl

2
推荐指数
1
解决办法
318
查看次数

在vi中更改突出显示颜色

如何更改用于突出显示vi中搜索的颜色?现在黄色背景上的白色字母完全难以辨认.我宁愿它只是颠倒颜色方案,即白色背景上的黑色字母或可能在黑色背景上有红色字母.但目前的配色方案无法使用.

vi

2
推荐指数
1
解决办法
4648
查看次数

Perl:是否可以在没有安装Mysql的情况下安装Mysql模块?

我正在尝试在我的开发机器上安装Mysql模块,但它似乎想在安装之前安装本地Mysql.

有工作吗?

我不需要或想要本地安装Mysql,我正在使用安装查询网络机器.

mysql perl

2
推荐指数
1
解决办法
88
查看次数

奇怪的ORA-06502:PL/SQL:数字或值错误

我循环遍历数据库中的表定义并提取DDL,以便能够为软件测试目的创建表"重复"的"黄金数据"集.我有以下代码,它提取DDL就好了一个表,它会抛出一个ORA-06502错误.问题是,我已经定义了DDL作为CLOB返回的变量,它应该足够大.这是代码:

    create or replace
procedure gettabledescription as 
  current_date_time  varchar2(32);
  sql_statement varchar2(200);
  ddl_return clob;
  new_ddl clob;
BEGIN
  DBMS_OUTPUT.ENABLE;
  current_date_time:= to_char(sysdate,'MM/DD/YYYY - HH24:MI:SS');
  dbms_output.put_line(current_date_time);
  for cursor_rec in (select * from user_objects where object_type='TABLE' and object_name not like 'TM%' and object_name not like 'TZ_%' and object_name not like 'EXT_%' and object_name not like 'RPT_%' and object_name not like 'ETL_%') loop
    sql_statement := 'select dbms_metadata.get_ddl(''TABLE'',' || '''' || cursor_rec.object_name || '''' || ') from dual';
    execute immediate sql_statement into ddl_return;
    **error thrown here** new_ddl …
Run Code Online (Sandbox Code Playgroud)

sql oracle

2
推荐指数
1
解决办法
2473
查看次数

使用Perl复制文件中的行

我觉得这很容易,但我很难过.我想将每行放在一个文件中并复制八次.这是我正在使用的代码:

#!/usr/bin/perl
use warnings;
use strict;
use diagnostics;


my $inputFile = "Providers list.csv";
my $outputFile = "Providers list2.csv";
open my $FHI, '<', $inputFile || die "cannot open input file";
open my $FHO, '>', $outputFile || die "cannot open output file";

while (<$FHI>) {
    for ( my $i = 0; $i < 8; $i++) {
    print $FHO "$_\r";
}
}

close $inputFile;
close $outputFile;
Run Code Online (Sandbox Code Playgroud)

发生了什么,而不是每一行重复8次,重复整个文件内容八次.换句话说,而不是这样:

Line1
Line1
Line1
Line1
Line1
Line1
Line1
Line1
Run Code Online (Sandbox Code Playgroud)

我明白了:

Line1
Line2
Line3
Line1
Line2
Line3
Run Code Online (Sandbox Code Playgroud)

等等,八次.我不明白为什么它不是单独处理每一行. …

perl

1
推荐指数
1
解决办法
256
查看次数

为什么我的perl one衬里不工作?

我正在尝试从HTML日志文件中获取错误数量.这是我的代码(是的,我知道我正在混合使用bash和perl):

 for line in `cat paths.txt`; do   grep Failed ${line} | perl -pe 'm/\d+/'; done
Run Code Online (Sandbox Code Playgroud)

我期待得到一个数字列表,例如,

0 
1 
0 
0 
0 
1 
6
Run Code Online (Sandbox Code Playgroud)

但相反,我得到包含错误的整行,例如,

      Total Failed: <strong>0</strong>
      Total Failed: <strong>1</strong>
      Total Failed: <strong>0</strong>
      Total Failed: <strong>0</strong>
      Total Failed: <strong>0</strong>
      Total Failed: <strong>1</strong>
      Total Failed: <strong>6</strong>
Run Code Online (Sandbox Code Playgroud)

我在看什么?

perl

1
推荐指数
1
解决办法
128
查看次数

perl one liner从xml文件中获取所有"键"

我试图去除XML文件中位于标签<KEYS>和</ KEYS>之间的所有行.

作为问题的第一步,我得到了一个正则表达式,它将匹配文件中的第一个键块,但它不会继续匹配文件中的其他块.我已经尝试在正则表达式中添加"/ g"并且我尝试了"-0777"来立刻淹没整个文件,这两种技巧都没有任何区别.下面是perl one liner:

perl -00 -ne 'print $1 if /(\s+\<KEYS\>\n\s+.*?\n\s+\<\/KEYS\>)/s' someFile.xml
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

  <KEYS>
    <KEY name="cone_id" type="long" nativeType="number(17)"/>
    <KEY name="bar_id" type="long" nativeType="number(32)"/>
    <KEY name="foo_type" type="int" nativeType="number(3)"/>
  </KEYS>
Run Code Online (Sandbox Code Playgroud)

如上所述,文件中有更多的块(长度接近五千行),但perl代码并没有弄乱任何其他块.

有什么建议?

regex perl

1
推荐指数
2
解决办法
1863
查看次数

重用子流程对象

我有一个 Python 脚本,需要发出许多 shell 命令。我认为我可以创建一个子进程对象,然后在每次执行命令时重用它。

这就是我设置代码的方式:

def setupPipeline(self):
    setupShell = subprocess.Popen([''], stdout=subprocess.PIPE, shell=True, stderr=subprocess.PIPE, stdin=subprocess.PIPE)

    # Stop running pipeline
    setupShell.stdin.write('stop ' + self.Name)
    output = setupShell.stdout.read()
    print output

    # Cancel any running jobs and cleanup variables
    setupShell.stdin.write('sudo -u pr cancel ALL')
    output = setupShell.stdout.read()
    print output

    setupShell.stdin.write('sudo -u pr clean ALL')
    output = setupShell.stdout.read()
    print output
Run Code Online (Sandbox Code Playgroud)

(这里跳过很多其他代码)

if __name__ == '__main__':
#self-test code
pipelineObj = Pipeline(sys.argv)
pipelineObj.setupPipeline()
Run Code Online (Sandbox Code Playgroud)

但是,当代码到达第二个命令时,我得到一个

IOError: [Errno 32] Broken pipe
Run Code Online (Sandbox Code Playgroud)

如何重用子进程对象来发出需要在同一 shell 中执行的命令?这些命令不能简单地链接在一起,因为每次调用之间都会进行处理。

python shell subprocess

1
推荐指数
1
解决办法
3075
查看次数

Perl阶乘子例程不接受命令行参数

我正在尝试在Perl中创建一个简单的递归阶乘函数,它将从命令行中获取一个数字,然后返回它的阶乘,例如

>./factorial.pl 3
>6
Run Code Online (Sandbox Code Playgroud)

我的子程序似乎没有采用命令行参数.但是,如果我在没有子包装器的情况下使用完全相同的代码,它会采用命令行参数,但显然不能用作子例程.以下是代码:

#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

sub fact() {
my $number = shift or return;
return 0 if $number < 0;

my $results = 1;

while ($number--) { $results *= $number--};
return $results;
}
Run Code Online (Sandbox Code Playgroud)

perl

0
推荐指数
2
解决办法
1726
查看次数

为什么这个变量不可见?

好的,我是从Perl转到Python而且我没有太多的Python经验,所以对于那些对Python更有经验的人来说,这似乎相当明显.

无论如何,我只是加载配置文件然后,作为自检,打印加载的值.代码如下:

#!/home/y/bin/python2.7
import logging
import sys
import datetime
import yaml

def main(self):
    #initialize the logger
    logger = logging.getLogger(self.granularity)
    log_fh = logging.FileHandler(filename='/home/logs/pipelineTest/pipelineTest' + datetime.datetime.now().strftime('%Y%m%d_%H%M')  + '.log', mode='w')
    logger.addHandler(log_fh)
    logger.setLevel(logging.INFO)
    formatter = logging.Formatter('%(asctime)-6s: %(name)s - %(levelname)s - %(message)s')
    log_fh.setFormatter(formatter)

    #read configuration file
    if sys.argv[1]:
        ymlFH = open(sys.argv[1])
    else:
        ymFH = open('/home/conf/pipelineTest/runPipeline.yml')

    confDict = yaml.load(ymlFH)

if __name__ == '__main__':
    #self-test code
    for key, value in confDict.iteritems():
      print 'Key is: ' + key + '\n'
      print 'value is: ' + confDict[key] + '\n' …
Run Code Online (Sandbox Code Playgroud)

python scope

0
推荐指数
1
解决办法
141
查看次数

"尝试"和"如果"之间的区别

Python中"try"语句和"if"语句之间是否存在任何功能差异?

python if-statement

-5
推荐指数
2
解决办法
3594
查看次数

标签 统计

perl ×7

python ×3

regex ×2

if-statement ×1

mysql ×1

oracle ×1

scope ×1

shell ×1

sql ×1

subprocess ×1

vi ×1