小编Ted*_*345的帖子

sub和gsub函数?

我有这个命令:

$ find $PWD -name "*.jpg" | awk '{system( "echo "  $(sub(/\//, "_")) ) }'
_home/mol/Pulpit/test/1.jpg
Run Code Online (Sandbox Code Playgroud)

现在同样的事情,但使用gsub:

$ find $PWD -name "*.jpg" | awk '{system( "echo "  $(gsub(/\//, "_")) ) }'

mol@mol:~
Run Code Online (Sandbox Code Playgroud)

我想得到结果:

_home_mol_Pulpit_test_1.jpg
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

编辑:

我把'echo'用来测试命令:

$ find $PWD -name "*.jpg" | awk '{gsub("/", "_")} {system( "echo " mv $0 " " $0) }'
_home_mol_Pulpit_test_1.jpg _home_pic_Pulpit_test_1.jpg

mol@mol:~
Run Code Online (Sandbox Code Playgroud)

我想得到结果:

$ find $PWD -name "*.jpg" | awk '{gsub("/", "_")} {system( "echo " mv $0 " " $0) }'
/home/pic/Pulpit/test/1.jpg  _home_pic_Pulpit_test_1.jpg
Run Code Online (Sandbox Code Playgroud)

awk substring r

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

AWK - 使用getline将变量传输到system()?

我有一个理论问题:

1)如何将变量传递给getline()系统?

awk 'BEGIN{var="ls"; var | getline var; system("echo $var")}'
Run Code Online (Sandbox Code Playgroud)

2)如何为输出系统("ls")分配变量并在awk中打​​印结果?

awk 'BEGIN{var="system("ls")"; print '$var'}'
Run Code Online (Sandbox Code Playgroud)

3)你能在系统中分配一个变量(var ="ls")并在awk中打​​印结果吗?

awk 'BEGIN{system(var="ls"); print "'"$var"'"}'
Run Code Online (Sandbox Code Playgroud)

感谢您的信息.

编辑:

torek:谢谢你的回复.

我理解在第一个例子中,你可以这样做:

awk 'BEGIN { while ("ls -l" | getline var) system("echo " var  );}'
Run Code Online (Sandbox Code Playgroud)

对于此应用程序,您不能从system()分配变量输出?如下例所示:

awk 'BEGIN {var="ls -l"; system(var); print var}'
Run Code Online (Sandbox Code Playgroud)

awk getline

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

Awk替代模式

我有两个示例文件:

文件1:

Bolek
jeden(wzór1)
Lolek
dwa(wzór2)
trzy(wzór3)
Run Code Online (Sandbox Code Playgroud)

文件2:

czerwony
zielony
niebieski
Run Code Online (Sandbox Code Playgroud)

我试过这个命令:

awk '{while(getline a < "file2"); sub(/wzór1/, a); print }' file1
Bolek
jeden(niebieski)
Lolek
dwa(wzór2)
trzy(wzór3)
Run Code Online (Sandbox Code Playgroud)

我想wzór1在"file2"的内容上替换"file1".我要打印:

Bolek
jeden(czerwony
zielony
niebieski)
Lolek
dwa(wzór2)
trzy(wzór3)
Run Code Online (Sandbox Code Playgroud)

awk

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

gawk和mawk之间的区别(列宽)

我有一个文件:

To jest d?ugi string z wieloma polskimi literami ?ó???? kodowany w UTF8, 
?eby 
by?o ?mieszniej, haha.
?
a
Run Code Online (Sandbox Code Playgroud)

示例gawk:

gawk '{printf "%-80s %-s\n", $0, length}' file
Run Code Online (Sandbox Code Playgroud)

在gawk中,我得到了正确的结果:

To jest d?ugi string z wieloma polskimi literami ?ó???? kodowany w UTF8,         73
?eby                                                                             5
by?o ?mieszniej, haha.                                                           22
?                                                                                1
a                                                                                1
Run Code Online (Sandbox Code Playgroud)

在gawk中,我得到了正确的结果:


示例mawk:

mawk '{printf "%-80s %-s\n", $0, length}' file
To jest d?ugi string z wieloma polskimi literami ?ó???? kodowany w UTF8,  80
?eby                                                                            6
by?o ?mieszniej, haha.                                                         24
? …
Run Code Online (Sandbox Code Playgroud)

awk gawk

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

Awk - 打印文件的最后4行

我有一个测试文件:

1
2
3
4
5
6
7
8
Run Code Online (Sandbox Code Playgroud)

此命令打印文件的最后4行:

$ awk 'BEGIN{"wc -l < file" | getline b}{if(NR>b-4) print}' file
5 
6 
7 
8 
userpc@userpc-desktop
Run Code Online (Sandbox Code Playgroud)

现在我想做同样的事情,但命令系统():

$ awk '{if( NR > (system("wc -l < file")-4) ) print}' file
8 
1 
8 
2 
8 
3 
8 
4 
8 
5 
8 
6 
8 
7 
8 
8 
userpc@userpc-desktop:
Run Code Online (Sandbox Code Playgroud)

如何改进最后一个命令系统()?我还想打印文件的最后4行.谢谢您的帮助.

awk

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

AWK - 更改第二个日期

我有一个文件:

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 gsub

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

Awk - 正则表达式

我有两个例子:

1.

$ echo"Lorem ipsum dolor sit amet"| awk'{gsub(/ L [^ r] r /,""); 打印}'

em ipsum dolor sit amet

2.

$ echo"Loorem ipsum dolor sit amet"| awk'{gsub(/ L [^ r] r /,""); 打印}'

Loorem ipsum dolor坐着

为什么第二个例子与第一个例子不一样?

在第一个例子中,记录[^r]被视为单个字符?是因为一个"o"被删除了吗?

awk

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

AWK解释示例

我有一个文件:

AWK question about the example
Run Code Online (Sandbox Code Playgroud)

这个命令效果很好:

awk  '{ gsub(/...../, "&\n" ) ; print}' file
AWK q
uesti
on ab
out t
he ex
ample
Run Code Online (Sandbox Code Playgroud)

为什么这个命令不会打印相同的结果?

awk  '{ gsub(/.{5}/, "&\n" ) ; print}' file
AWK question about the example
Run Code Online (Sandbox Code Playgroud)

为什么这个命令不会打印相同的结果?

awk -v WIDTH=5 '{ gsub(".{"WIDTH"}", "&\n"); print }' file
AWK question about the example
Run Code Online (Sandbox Code Playgroud)

awk gawk

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

AWK - 作为命令执行字符串?

该命令打印:

\n\n
$ echo "123456789" | awk \'{ print substr ($1,1,4) }\'\n1234\n
Run Code Online (Sandbox Code Playgroud)\n\n

是否可以将字符串作为命令执行?例如,这个命令:

\n\n
echo "123456789" | awk \'{a="substr"; print a ($1,1,4) }\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果:

\n\n
$ echo "123456789" | awk \'{a="substr"; print a ($1,1,4) }\'\nawk: {a="substr"; print a ($1,1,4) }\nawk:                               ^ syntax error\n
Run Code Online (Sandbox Code Playgroud)\n\n

编辑:

\n\n
$ cat tst.awk \nfunction my_substr(x,y,z) { return substr(x,y,z) }\n\n{ a="my_substr"; print @a($1,1,4) }\nbolek@bolek-desktop:~/Pulpit$ echo "123456789" | gawk -f tst.awk\ngawk: tst.awk:3: { a="my_substr"; print @a($1,1,4) }\ngawk: tst.awk:3:                        ^ nieprawid\xc5\x82owy znak \'@\' w wyra\xc5\xbceniu\nbolek@bolek-desktop:~/Pulpit$ …
Run Code Online (Sandbox Code Playgroud)

awk

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

AWK - 移动区域(修正版)

我有一个文件:

A B C D E
jeden dwa- trzy cztery piec
czarny) bialy zielony niebieski siwy
czarny) bialy zielony niebieski siwy
kot pies mysz osa byk
jeblon grusza czeresnia- sliwa orzech
tulipan narcyz filolek) irys bez
sliwka jabkko pomarancza kiwi arbuz
5 A B C D E
sliwka jabkko pomarancza kiwi arbuz-
marek ewa ela tomek) romek
Run Code Online (Sandbox Code Playgroud)

我试过了:

awk 'c-->0;/- /{c=1; print}' file
Run Code Online (Sandbox Code Playgroud)

如何改进这个例子,获得这样的结果?我想得到这个结果:

A B C D E
jeden dwa-czarny) trzy cztery piec
 bialy zielony niebieski siwy
czarny) bialy …
Run Code Online (Sandbox Code Playgroud)

awk

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

AWK - 如何添加句号?

我有一个文件:

fakdfal
14867
kgjafdfrf
8423685
Run Code Online (Sandbox Code Playgroud)

我想得到结果:

fakd.fal
14.867
kgjafd.frf
8423.685
Run Code Online (Sandbox Code Playgroud)

awk gawk

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

标签 统计

awk ×11

gawk ×3

getline ×1

gsub ×1

r ×1

substring ×1