我有这个命令:
$ 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) 我有一个理论问题:
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) 我有两个示例文件:
文件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) 我有一个文件:
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)
示例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) 我有一个测试文件:
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行.谢谢您的帮助.
我有一个文件:
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) 我有两个例子:
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 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) 该命令打印:
\n\n$ echo "123456789" | awk \'{ print substr ($1,1,4) }\'\n1234\nRun Code Online (Sandbox Code Playgroud)\n\n是否可以将字符串作为命令执行?例如,这个命令:
\n\necho "123456789" | awk \'{a="substr"; print a ($1,1,4) }\'\nRun 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\nRun 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) 我有一个文件:
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) 我有一个文件:
fakdfal
14867
kgjafdfrf
8423685
Run Code Online (Sandbox Code Playgroud)
我想得到结果:
fakd.fal
14.867
kgjafd.frf
8423.685
Run Code Online (Sandbox Code Playgroud)