小编now*_*wy1的帖子

如何减少AWK中正则表达式的贪婪?

我想在awk. 下面是一个例子:

echo "@article{gjn, Author =   {Grzegorz J. Nalepa}, " | awk '{ sub(/@.*,/,""); print }'
Run Code Online (Sandbox Code Playgroud)

是否可以编写一个选择较短字符串的正则表达式?

@article{gjn,
Run Code Online (Sandbox Code Playgroud)

而不是这个长字符串?:

@article{gjn, Author =   {Grzegorz J. Nalepa},
Run Code Online (Sandbox Code Playgroud)

我想得到这个结果:

 Author =   {Grzegorz J. Nalepa},
Run Code Online (Sandbox Code Playgroud)



我还有一个例子:

echo " ,文章{gjn, Author = {Grzegorz J. Nalepa}, " | awk '{ sub(/ , [^,]*,/,""); 打印 }'
      ? ?^^^^^

请注意,我将输入字符串和正则表达式的第一个位置中的@字符更改为逗号 ( ,) 字符(也更改.*[^,]*)。是否可以编写一个选择较短字符串的正则表达式?

, Author =   {Grzegorz J. Nalepa},
Run Code Online (Sandbox Code Playgroud)

而不是更长的字符串?:

,article{gjn, Author =   {Grzegorz J. Nalepa},
Run Code Online (Sandbox Code Playgroud)

我想得到这个结果:

,article{gjn
Run Code Online (Sandbox Code Playgroud)

awk regular-expression

17
推荐指数
2
解决办法
2万
查看次数

Conky - 字符串格式化

我有记录:

${color lightblue} Down: ${downspeed wlan0} Up: ${upspeed wlan0}
Run Code Online (Sandbox Code Playgroud)

Conky 打印链接速度,但文本移动:

Down: OB  Up: OB 
Down: 60B  Up: 60B
Down: 148B  Up: 148B
Down: 1KiB  Up: 1KiB
Down: 1.8KiB  Up: 1.8KiB
Down: 1.08KiB  Up: 1.08KiB
Down: 31.8KiB  Up: 31.8KiB
Run Code Online (Sandbox Code Playgroud)

基于此主题创建具有零填充的 Conky 文本变量?我尝试格式化输出,但文本仍在移动。

${color lightblue} Down: ${lua_parse format %7s ${downspeed wlan0}} Up: ${lua_parse format %7s ${upspeed wlan0}}
Run Code Online (Sandbox Code Playgroud)

我想要打印输出 conky:

Down:      0B  Up:      0B
Down:     60B  Up:     60B
Down:    148B  Up:    148B
Down:    1KiB  Up:    1KiB
Down:  1.8KiB  Up:  1.8KiB …
Run Code Online (Sandbox Code Playgroud)

bash c awk conky lua

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

将格式化日期转换为自纪元以来的秒数

我有一个文件:

pablo tty8 Thu Nov 1 12:51:21 2012 still logged in 
(unknown tty8 Thu Nov 1 12:50:57 2012 - Thu Nov 1 12:51:21 2012 (00:00) 
pablo tty2 Thu Nov 1 12:50:39 2012 still logged in 
pablo tty7 Thu Nov 1 12:49:45 2012 - Thu Nov 1 12:50:56 2012 (00:01) 
(unknown tty7 Thu Nov 1 12:34:32 2012 - Thu Nov 1 12:49:45 2012 (00:15)
Run Code Online (Sandbox Code Playgroud)

我想替换上述日期中的文件一秒钟。我想打印:

pablo tty8 1351770681 still logged in 
(unknown tty8 1351770657 - 1351770681 (00:00) 
pablo tty2 1351770639 still …
Run Code Online (Sandbox Code Playgroud)

awk date

6
推荐指数
2
解决办法
9527
查看次数

如何在awk中比较两个数字?

这个例子工作正常:

awk -v num1=5999 -v num2=5999  'BEGIN{ print (num2==num1) ? "equal" : "not equal" }'
equal
Run Code Online (Sandbox Code Playgroud)

这个例子不能很好地工作:

awk -v num1=59558711052462309110012 -v num2=59558711052462309110011 'BEGIN{ print (num2==num1) ? "equal" : "not equal" }'
equal
Run Code Online (Sandbox Code Playgroud)

在第二个例子中,比较的数字是不同的。为什么不打印“不等于”?

awk numeric-data

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

使用 awk,如何从多个文件源获取所需的输出

我有两个文件:

文件 1:

A,D
B,E
C,F
Run Code Online (Sandbox Code Playgroud)

文件2:

G,H,I
J,K,L
Run Code Online (Sandbox Code Playgroud)

使用awk,我想打印:

A,D
B,E,I
C,F,L
Run Code Online (Sandbox Code Playgroud)

我怎样才能awk实现这一目标?

awk files merge

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

如果在 Gawk 中

我有一个例子:

echo $(seq 9) | awk '{for(i=1;i<=NF;i++) if(i!=5&&i!=6) {printf "%s ",i}else{printf "%s ",""} print ""}'
1 2 3 4   7 8 9 
Run Code Online (Sandbox Code Playgroud)

是否可以使用此命令的简写?

echo $(seq 9)| awk '{for(i=1;i<=NF;i++) (i!=5&&i!=6) ? {printf "%s ",i} : {printf "%s ",""} print ""}'
Run Code Online (Sandbox Code Playgroud)

谢谢你的解释。

awk

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

标签 统计

awk ×6

bash ×1

c ×1

conky ×1

date ×1

files ×1

lua ×1

merge ×1

numeric-data ×1

regular-expression ×1