小编Eng*_*ng7的帖子

如何使用awk取绝对值?

如果我有以下两个日期:

2015-09-12,2015-08-13
Run Code Online (Sandbox Code Playgroud)

我需要获取它们之间的天数,我将使用以下代码:

awk -F'[-,]' '{print 360*($4-$1)+30*($5-$2)+($6-$3)}'
Run Code Online (Sandbox Code Playgroud)

此代码的输出将是,-29而实际上差异是29

bash awk text-processing

19
推荐指数
3
解决办法
5万
查看次数

awk 中的当前日期

中是否有一个常量变量awk,用于存储今天的日期?如果没有,有没有办法可以存储今天的日期以供日常使用?

假设我们有以下文件:

boo,foo,2016-08-30
foo,boo,2016-07-31
Run Code Online (Sandbox Code Playgroud)

我需要将$3文件中的日期与今天的日期进行比较,无论它是什么。

即下面的脚本:

awk -F, '{if($3>"2015-08-23"){print $0}}'
Run Code Online (Sandbox Code Playgroud)

2015-08-23当前日期将在哪里更改。

awk text-processing gawk

9
推荐指数
3
解决办法
4万
查看次数

使用 awk 处理 3 个文件

考虑以下文件:

file1

boo,8,1024
foo,7,2048
Run Code Online (Sandbox Code Playgroud)

file2

foo,0,24,154
noo,0,10,561
Run Code Online (Sandbox Code Playgroud)

file3

24,154,7,1024,0
Run Code Online (Sandbox Code Playgroud)

我需要的是去File1并检查是否$2==7;如果为真,取$1,$2$3来自File1 ; 现在我必须比较$1来自File1 是否等于$1来自File2;如果为真,我必须从File1中不存在的File2$3和,然后我必须转到File3并检查from File3是否等于from File2,以及from File3等于from File2;如果是,那么我必须检查是否来自File1$4$1$3$2$4$2等于$3from File3,那么如果这个条件为真,我必须比较$3from File1$4from File3,如果$3from File1大于$4from File3

我尝试了以下脚本: …

awk text-processing gawk

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

分隔符正在随字段更改

我有一个文件,其中的值按列组织,并用逗号分隔,如下面的文件所示:

324,01,1,113333600000,1,,
016,01,1,134954200000,1,,
770,01,1,109069200000,1,,
853,01,1,111518800000,1,,
Run Code Online (Sandbox Code Playgroud)

当我使用以下awk命令时,分隔符逗号更改为空格

代码:

awk -F, '{$4=$4/1024}{print $0}'
Run Code Online (Sandbox Code Playgroud)

输出变为:

324 01 1 110677343.75 1  
016 01 1 131791210.93 1  
770 01 1 106512890.62 1  
853 01 1 108905078.12 1 
Run Code Online (Sandbox Code Playgroud)

如何在不更改分隔符的情况下更改字段的值?

awk text-processing

8
推荐指数
2
解决办法
854
查看次数

使用 Openssl asn1parse 工具解码 ASN.1 消息

我正在使用openssl asn1parse工具 over ,当我尝试使用以下命令解析消息时,RHEL我有自己的 ASN.1 抽象语法文件,称为:TestModule.asn1

openssl asn1parse -inform DER -genconf TestModule.asn1 -in CDRMessage -out test.txt
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error on line 1 of config file 'TestModule.asn1'
140411047393096:error:0E079065:configuration file routines:DEF_LOAD_BIO:missing equal sign:conf_def.c:362:line 1
Run Code Online (Sandbox Code Playgroud)

请注意,我检查了配置文件,它应该没有错误。

更新:

以下是 TestModule.asn1 文件中前 10 行的列表:

--      File : TestModule.asn1
--

CDRMSG_GA_1040 {iso(1) member-body(2) bsi(826) disc(0) vndr(1249)
Domain (0) charge (5) cDRMSG (1) asn1Module (0)}

DEFINITIONS IMPLICIT TAGS ::=

BEGIN
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

rhel openssl

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

第一场比赛 - awk

考虑具有值的文件:

foo
boo
too
Run Code Online (Sandbox Code Playgroud)

还有一个:

foo,1
foo,2
boo,1 
soo,1
Run Code Online (Sandbox Code Playgroud)

如何仅从第二个文件中获取第一个匹配项,其中输出为:

foo,1
boo,1
Run Code Online (Sandbox Code Playgroud)

awk text-processing

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

awk 比较使用数组

我有以下文件:

6180,6180,0,1,,1,0,1,1,0,0,0,0,0,0,0,0,4326,4326,,0.440000,
6553,6553,0,1,,1,0,1,1,0,0,0,0,1,0,1,0,4326,4326,,9.000000,
1297,1297,0,0,,0,0,1,0,0,0,0,0,1,0,1,0,1707,1707,,7.000000,
6598,6598,0,1,,1,0,1,1,0,0,0,1,0,0,0,0,1390,1390,,0.730000,
4673,4673,0,1,,1,0,1,1,0,0,0,0,0,0,0,0,1707,1707,,0.000000,
Run Code Online (Sandbox Code Playgroud)

我需要一个 awk 命令,它以 18 美元的价格打印出 21 美元的最大值。

所需的输出将如下所示:

6553,6553,0,1,,1,0,1,1,0,0,0,0,1,0,1,0,4326,4326,,9.000000,
1297,1297,0,0,,0,0,1,0,0,0,0,0,1,0,1,0,1707,1707,,7.000000,
6598,6598,0,1,,1,0,1,1,0,0,0,1,0,0,0,0,1390,1390,,0.730000,
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果,但是使用了 sort 命令,如下所示:

sort -t, -k18,18n -k21,21nr | awk -F"," '!a[$18]++'
Run Code Online (Sandbox Code Playgroud)

虽然我想用单个 awk 命令来完成它。

请指教,

awk text-processing

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

在AWK中,是否可以指定操作范围?

例如:给定一个逗号分隔文件"foo"50每行中的字段,我想打印$0如果$10 !=范围从10011010

我可以使用下面的代码来做到这一点:

awk -F, '{if($10!=1001 && $10!=1002 && $10!=1003 && $10!=1004 && $10!=1005 && $10!=1006 && $10!=1007 && $10!=1008 && $10!=1009 && $10!=1010 ){print $0}}'
Run Code Online (Sandbox Code Playgroud)

然而这种方式容易出错。

可以做到吗?

awk text-processing

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

打印多个字段

有没有办法用单行命令打印多个字段?

我想打印 $3 到 $NF,我可以这样做:

awk -F[:] '{print $3,$4,$5 .... $NF}'
Run Code Online (Sandbox Code Playgroud)

然而,对于大量字段,它是不可行的,并且容易出错。

awk text-processing

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

awk 中的时间戳比较

考虑下面的文件,我如何比较两个时间戳,注意时间部分可以忽略不计。

foo,boo,2038-01-18T12:00:00+02:00
foo,boo,2015-09-12T01:31:24+03:00
foo,boo,2015-08-04T03:15:38+03:00
Run Code Online (Sandbox Code Playgroud)

我尝试substring使用以下代码按日期制作它并将其与其他日期进行比较,即: 2015-08-12

awk -F, '{$3=substr($3,1,10)}{if($3<2015-08-12){print $0}}'
Run Code Online (Sandbox Code Playgroud)

但它没有用。

期望的输出:

foo,boo,2015-08-04T03:15:38+03:00
Run Code Online (Sandbox Code Playgroud)

或者:

foo,boo,2015-08-04
Run Code Online (Sandbox Code Playgroud)

awk text-processing

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

awk 中的条件 if 子句

请考虑以下文件:

foo,1000,boo,A
foo,1000,boo,B
foo,1001,boo,B
foo,1002,boo,D
Run Code Online (Sandbox Code Playgroud)

我们有以下规则:

If $2 equal 1000, $4 should be equal A
If $2 equal 1001, $4 should be equal B
If $2 equal 1002, $4 should be equal C
Run Code Online (Sandbox Code Playgroud)

我想将上述规则应用于单个awk命令,如果$4不遵守,则打印记录。

所需的输出是:

foo,1000,boo,B
foo,1002,boo,D
Run Code Online (Sandbox Code Playgroud)

我试过:

awk -F, '{if(($2==1000 && $4!=A) || ($2==1001 && $4!=B) || ($4==1002 && $4!=C)){print $0}}'
Run Code Online (Sandbox Code Playgroud)

awk text-processing gawk

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

在 awk 中使用字段的一部分

如何将字段的一部分用于awk脚本?

输入文件:

123456789,0,0,4,1,6,8,6
987654321,0,0,8,4,6,9,8
251335549,8,9,6,3,1,8,8
897465419,8,1,8,9,4,7,9
Run Code Online (Sandbox Code Playgroud)

我需要选择 , 的第三个字符$1以将其应用于某个操作。

例子:

$9 = (3rd character from $1) - 3
Run Code Online (Sandbox Code Playgroud)

awk text-processing

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

FNR 和 NR 变量问题

我有两个文件,其中一个有 10 条记录,另一个有 15 条记录,问题是当我将cat它们放在一起时,总是FNR=NR.

例如,考虑以下文件:

文件1:

1,boo
2,foo
3,boo
Run Code Online (Sandbox Code Playgroud)

文件2:

1,boo
2,foo
3,boo
4,foo
Run Code Online (Sandbox Code Playgroud)

应用以下代码时:

cat File1 File2 | awk -F, '{print FNR}'
Run Code Online (Sandbox Code Playgroud)

结果应该是:

1
2
3
1
2 
3
4
Run Code Online (Sandbox Code Playgroud)

但我实际上拥有的是FNR= 1 到 7。

awk text-processing files

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

标签 统计

awk ×12

text-processing ×12

gawk ×3

bash ×1

files ×1

openssl ×1

rhel ×1