Linuc Lv1 メモ④パイプ、正規表現
パイプ
コマンドやプログラムの出力結果を。別のコマンドや入力に渡すことでちょっと複雑な処理をすることができる。
teeコマンド
コマンドの実行結果を保存するとともに、次のコマンドへと実行結果を渡せる。
[root@localhost ken]# tee ls_log | wc -l
[root@localhost ken]# ls -l | tee test_log | wc -l
5
-a(add) 追記
リダイレクト
コマンド実行結果を画面に出力しないで、指定したファイルに保存するだけの処理をしたい場合などに利用する。
コマンド << 終了文字
終了文字が現れるまで標準入力へ送る。
↓の場合はworld を入力するまで入力し続け、該当ワードを入力したら、それまでに入力した文字をすべて表示する。
[root@localhost ~]# cat << world
> Hello world1
> Hello
> world
Hello world1
Hello
↓のようにファイルを指定したら、該当ワードを入力した時点でファイルの中身がすべて表示される。
[root@localhost ~]# cat ken.txt << AWS5
> AWS8
> AWS5
AWS
AWS2
AW3
AEDS
AFWE
AWEgaga
AWS5
LPIC
LINUC
Linuc
コマンド > ファイル 2>&1
ファイルに標準出力とエラー結果を書き込む。
tr [オプション] [文字列1 [文字列2]] < ファイル名
[root@localhost ~]# tr PING ping < ryo > ryo2
[root@localhost ~]# ls
[root@localhost ~]# cat ryo2
ping
ping
xargsコマンド
標準入力から渡された文字列を、指定のコマンドの引数として実行するコマンドはxargsです。
[root@localhost ~]# cat ryo2 | xargs touch
[root@localhost ~]# ls
ryo ryo2
テキスト処理フィルタ
ファイルやテキストデータを何らかの処理を行って出力するコマンド。
catコマンド
-n 行数付与 cat -n = nl
nlコマンド
指定したファイルの行数を指定して表示する。
空行を含めたすべての行に番号をつける
nl -b a ken2.txt
cat -n ken2.txt
[root@localhost ~]# nl -b a ken2.txt
1 AWS
2 AWS2
3 AW3
4 AEDS
5
6 AFWE
7 AWEgaga
8
9
10 AWS5
11 LPIC
12 LINUC
[root@localhost ~]# cat -n ken2.txt
1 AWS
2 AWS2
3 AW3
4 AEDS
5
6 AFWE
7 AWEgaga
8
9
10 AWS5
11 LPIC
12 LINUC
空行を除いたすべての行に番号をつける(nlコマンドはデフォルト)
nl -b t ken2.txt
cat -b ken2.txt
[root@localhost ~]# nl -b t ken2.txt
1 AWS
2 AWS2
3 AW3
4 AEDS
5 AFWE
6 AWEgaga
7 AWS5
8 LPIC
9 LINUC
10 Linuc
[root@localhost ~]# cat -b ken2.txt
1 AWS
2 AWS2
3 AW3
4 AEDS
5 AFWE
6 AWEgaga
7 AWS5
8 LPIC
9 LINUC
10 Linuc
odコマンド(Octal Dump)
8進数や16進数で表示する。デフォルトは8進数(octal)、od xコマンドは16進数(Hexadecimal)
[root@localhost etc]# cat local.conf
NG=ja_JP.utf8
[root@localhost etc]# od local.conf
0000000 043516 065075 057541 050112 072456 063164 005070
0000016expand
expandコマンド
expand -t 1 ken.txt タブを1つのスペースに置き換える。
-t数字でスペース数を指定。
[root@localhost ~]# expand -t 1 ken.txt
AWS
AWS2
AW3
AEDS
AFWE
AWEgaga
AWS5
LPIC
LINUC
Linuc
headコマンド
先頭〇行を表示するコマンド。
haad -〇 ファイル名 or haad -n 〇 ファイル名
[root@localhost ~]# head -5 ken2.txt
AWS
AWS2
AW3
AEDS
AFWE
[root@localhost ~]# head -n 5 ken2.txt
AWS
AWS2
AW3
AEDS
AFWE
tailコマンド
指定したファイルの末尾部分を表示するコマンド。
行数を指定する場合、-n (行数) もしくは、-(行数)
[root@localhost ~]# tail -n 5 ken2.txt
AWS5
LPIC
LINUC
Linuc
[root@localhost ~]# tail -5 ken2.txt
AWS5
LPIC
LINUC
Linuc
cutコマンド
cut -d 1,7 -f : /etc/passwd
「:」で区切られている「/etc/passwd」ファイルから、1番目のフィールドと7番目のフィールドを取り出す。
-d(delimiter)
prコマンド
pr -h title-ken2 -l 30 ken2.txt
・ken2テキストを印刷する。
・印刷する際のヘッダー名は「title-ken2」
・1ページあたり30行
uniqコマンド
ソートされているファイルにある連続した重複行のみを表示するコマンド。
uniq -d(duplication) 重複している行のみ表示
uniq -u 重複していない行のみ表示
改行コード
正規表現
sedコマンド
^$ 空白行
[root@localhost ~]# cat ken2.txt
AWS
AWS2
AW3
AEDS
AFWE
AWEg aga
AWS5
LPIC
LINUC
[root@localhost ~]# sed '/^$/d' ken2.txt
AWS
AWS2
AW3
AEDS
AFWE
AWEg aga
AWS5
LPIC
LINUC
sed y/ab/AB/ memo = sed -e s/a/A/g -e s/b/B/g memo
[ken@localhost ~]$ cat memo
a b ab
c d cd
e f ef
[ken@localhost ~]$ sed y/ab/AB/ memo
A B AB
c d cd
e f ef
[ken@localhost ~]$ sed -e s/a/A/g -e s/b/B/g memo
A B AB
c d cd
e f ef
grep、egrepコマンド
grep
grep -i aw ken2.txt ファイルから大文字小文字を問わず「aw」を検索
[root@localhost ~]# grep -i aw ken2.txt
AWS
AWS2
AW3
AWEg aga
AWS5
egrep = grep -E
正規表現を使う場合
[root@localhost ~]# egrep 'a?' ken2.txt
AWS
AWS2
AW3
AEDS
AFWE
AWEg aga
AWS5
LPIC
fgrep = grep \
正規表現を使わない場合
[root@localhost ~]# fgrep 'AW.' ken2.txt
AW.
[root@localhost ~]# egrep 'AE.' ken2.txt
AEDS
sed(Stream Editor)コマンド
sed s/Lpic/lpic/ memo ファイルの1行目の最初の該当の「Lpic」を「lpic」に置換する
sed s/Lpic/lpic/g memo 該当箇所をすべて置換する
複数編集する場合は、「-e」必須
[root@localhost ~]# cat memo
Linux Linux Linux
Lpic Lpic Lpic
Linuc
[root@localhost ~]# sed s/Lpic/lpic/ memo
Linux Linux Linux
lpic Lpic Lpic
Linuc
[root@localhost ~]# sed s/Lpic/lpic/g memo
Linux Linux Linux
lpic lpic lpic
Linuc
sed '1,2d' memo ファイルの1行目と2行目を削除する
[root@localhost ~]# cat memo
Linux Linux Linux
Lpic Lpic Lpic
Linuc
[root@localhost ~]# sed '1,2d' memo
Linuc
この記事が気に入ったらサポートをしてみませんか?