我想在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) 我有记录:
${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) 我有一个文件:
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 -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)
在第二个例子中,比较的数字是不同的。为什么不打印“不等于”?
我有两个文件:
文件 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
实现这一目标?
我有一个例子:
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)
谢谢你的解释。