More Related Content
More from Ryuichi Ueda (20)
20130622第5回シェル芸勉強会スライド
- 8. 注意
• 解答例は
Mac
で作成
• Linux
の人は
gawk,
gsed,
tail
-‐r
を適宜 awk,
sed,
tac
に読み替えのこと
• その他環境でも、解答例にこだわらずネット等を
調べながら解答願います。
• 解答では、例題が解ければよい。
– 一般解を探すのは、場合によっては悪い癖となる。
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
8
- 10. 解答
• $
ls
-‐l
|
grep
^l
|
awk
'{print
$NF,$(NF-‐2)}'
|
while
read
f
t
;
do
mv
$t
$t.org
;
cp
$f
$t
;
done
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
10
- 11. 問題2
• /etc/hosts
と
/etc/resolv.conf
をつなげて、
以下のように各行に元のファイル名がついた
一つのファイルを作ってください。
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
11
- 12. 解答
• $
grep
""
/etc/hosts
/etc/resolv.conf
|sed
's/:/
/'
• $
awk
'{print
FILENAME,$0}'
/etc/hosts
/etc/resolv.conf
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
12
- 14. 解答
• $
cat
file
|
sed
's;/etc/;;'
|
awk
'{f=$1;sub(/^[^
]*
/,"",$0);print
$0
>
f}'
• $
cat
file
|
sed
's;/etc/;;'
|
keycut
-‐d
%1
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
14
- 16. 解答
• cat
data2
|
sort
-‐s
-‐k1,1
|
awk
'{if($1=="a"){a=$2}
else{b=$2}}END{print
"a",a;print
"b",b}'
• cat
data2
|
sort
-‐s
-‐k1,1
|
awk
'{n[$1]=$2}
END{print
"a",n["a"];print
"b",n["b"]}'
• $
cat
data2
|
sort
-‐s
-‐k1,1
|
tail
-‐r
|
sort
-‐u
-‐k1,1r
• $
cat
data2
|
sort
-‐s
-‐k1,1
|
tail
-‐r
|
sort
-‐us
-‐k1,1
• $
tail
-‐r
data2
|
sort
-‐su
-‐k1,1
• $
cat
data2
|
sort
-‐s
-‐k1,1
|
getlast
1
1
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
16
- 18. 解答
• AWKでゴリゴリ
– $
cat
data1
|
awk
'{a+=$1;b+=$2;c+=$3;d+=$NR;
e+=$(4-‐NR);print
$1+$2+$3}END{print
a,b,c,d,e}'
|
tr
'
'
'n'
|
uniq
• Open
usp
Tukubaiを使う
$
cat
data1
|
ysum
|
self
4
|
uniq
$
tateyoko
data1
|
ysum
|
self
4
|
uniq
$
awk
'{a+=$NR;b+=$(4-‐NR)}END{print
a;
print
b}'
data1
|
uniq
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
18
- 20. 解答
• $
cat
/usr/share/dict/words
|
sed
's/(.).*/1/'
|
tr
'a-‐z'
's-‐s'
|
tr
'A-‐Z'
'l-‐l'
|
sort
|
uniq
–c
• $
cat
/usr/share/dict/words
|
sed
's/[a-‐z].*/s/'
|
sed
's/[A-‐Z].*/l/'
|
sort
|
uniq
–c
• $
cat
/usr/share/dict/words
|
self
1.1.1
|
awk
'$1>="a"{s++}$1<"a"{l++}END{print
s,l}’
• $
cat
/usr/share/dict/words
|
self
1.1.1
|
awk
'$1>="a"{print
"s"}$1<"a"{print
"l"}'
|
sort
|
count
1
1
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
20
- 21. 問題7
• $
echo
ダァシエリイェス
して、ワンライナーで字を反転してください。
(「ダ」がめんどくさい)
スェイリエシァダ
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
21
- 22. 解答
• $
echo
ダァシエリイェス |
gsed
's/ダ/&n/g'
|
gsed
'2s/./&n/g'
|
tail
-‐r
|
tr
-‐d
'n'
• $
echo
ダァシエリイェス |
gsed
-‐e
's/ダ/ダn/'
-‐e
's/./&n/
g'
|
tail
-‐r
|
tr
-‐d
'n'
|
sed
's/ダ/ダ/'
• $
echo
ダァシエリイェス |
nkf
-‐X
|
rev
|
nkf
–Z4
• $
echo
ダァシエリイェス |
zen
|
gsed
's/./&n/g'
|
tail
-‐r
|
tr
-‐d
'n'
|
han
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
22
- 24. 解答
• $
echo
1
3
5
7
7
5
3
1
|
tr
'
'
'n'
|
awk
'{print
4-‐
int($1/2),$1}'
|
awk
'{for(i=1;i<=$1;i++){prinu
"
"}
for(i=1;i<=$2;i++){prinu
"a"}print
""}’
• $
echo
4
1
|
awk
‘NR==1{s=$1;a=1}END{for(i=1;i<=4;i
++){print
s-‐-‐,a;a+=2}}’
|
awk
‘{for(i=1;i<=$1;i++){prinu
“
”};for(i=1;i<=$2;i++){prinu
“a”};print
“”}’
>
a
;
tail
-‐r
a
|
cat
a
–
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
24
- 26. 解答
• $
echo
15
|
awk
'{a=10;
for(i=1;i<=$1;i++){a=a+(rand()
>
0.5?-‐1:1);print
a}}'
|
awk
'{for(i=1;i<=$1;i++){prinu
"
"}prinu
"on"}'
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
26
- 28. 解答
• $
cat
/usr/share/dict/words
|
awk
'/^this$/{prinu
"_
";print}{print}'
|
awk
'/^is$/{prinu
"__
";print}{print}'
|
awk
'/^a$/{prinu
"___
";print}{print}'
|
awk
'/^pen$/{prinu
"___
";print}{print}'
|
grep
^_
|
sort
|
tr
-‐d
'_'
|
tr
'n'
'
'
2013/6/22
第5回シェル芸勉強会(プレーンタイプ)
28