小编Rob*_*Rob的帖子

Bash从列名中检索列号

有没有更好的方法(例如AWK中的一个班轮)我可以在列表名称中使用标题获取列号?我希望能够独立于列号的实际处理列(例如,当添加另一列时,脚本不需要更改).

例如,给定"table.tsv"中的下表:

ID  Value   Target  Not Used
1   5   9   11
2   4   8   12
3   6   7   10
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法对"目标"列进行排序:

#!/bin/bash
(IFS=$'\t'; read -r; printf "%s\n" "$REPLY"; i=0; for col in $REPLY; do
    ((++i))
    [ "$col" == "Target" ] && break
done; sort -t$'\t' "-k$i,${i}n") < table.tsv
Run Code Online (Sandbox Code Playgroud)

有没有办法没有for循环(或至少清理一下)?

给定脚本的预期输出是:

ID      Value   Target  Not Used
3       6       7       10
2       4       8       12
1       5       9       11
Run Code Online (Sandbox Code Playgroud)

但是,我试图给出一个我想要做的事情的例子.我想通过几个程序传递/过滤我的表,因此应保留标题和所有列:只需在每一步进行处理.在伪代码中,我想做的是:

print headings from stdin
i=$(magic to determine column position given "Target")
sort -t$'\t' …
Run Code Online (Sandbox Code Playgroud)

bash shell awk

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

如何在模块中包含排序功能?

如何在模块中包含自定义排序功能?

例如,如果我创建以下脚本(test.pl):

#!/usr/bin/perl

use 5.022;
use warnings;
use diagnostics;
use utf8;
use open qw(:std :utf8);
binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";

sub mysort {
    return $a cmp $b;
}

my @list = ('a', 'd', 'b', 'c');
say join "\n", sort mysort @list;
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是当我把它们分成test.pl时:

#!/usr/bin/perl

use 5.022;
use warnings;
use diagnostics;
use utf8;
use open qw(:std :utf8);
binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";

use my::module;

my @list = ('a', 'd', 'b', 'c');
say join "\n", sort mysort @list;
Run Code Online (Sandbox Code Playgroud)

和我的/ module.pm:

package …
Run Code Online (Sandbox Code Playgroud)

sorting perl module global-variables include

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

如何匹配重叠的perl正则表达式?

我正在尝试使用正则表达式匹配重叠部分时使用/ g.我相信我需要使用lookbehind,但我无法理解文档并使其匹配.

例如,测试用例:

use feature ':5.18';
use warnings;
use diagnostics;
use utf8;

my $test = '1 1 1';
$test =~ s/(?=[0-9]+) ([0-9]+)/$1$2/g;
say $test;      # still get '1 1 1'
Run Code Online (Sandbox Code Playgroud)

我如何摆脱空间?输出应为'111'.

regex perl

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

标签 统计

perl ×2

awk ×1

bash ×1

global-variables ×1

include ×1

module ×1

regex ×1

shell ×1

sorting ×1