LinuxコマンドラインとShellスクリプトプログラミング大全-sedとgawkの初認識
3907 ワード
この章の内容:テキスト処理 sedエディタベース テキスト処理
Linuxシステムでは、テキスト要素をフォーマット、挿入、変更、または削除する2つの一般的なコマンドラインエディタが用意されています.このセクションでは、Linuxの世界で最も広範な2つのコマンドラインエディタについて説明します.
コマンドライン定義エディタコマンド
コマンドラインで複数のエディタコマンドを使用する
ファイルからエディタコマンドを読み込む
gawkプログラム
$0はテキスト行全体を表します$1はテキスト行の1番目のデータフィールドを表します$2はテキスト行の2番目のデータフィールドを表します$3はテキスト行の3番目のデータフィールドを表します$nはテキスト行のn番目のデータフィールドを表します
プログラムスクリプトで複数のコマンドを使用
ファイルからプログラムを読み込む
データの処理前にスクリプトを実行
データ処理後のスクリプトの実行
sedエディタベース
Linuxシステムでは、テキスト要素をフォーマット、挿入、変更、または削除する2つの一般的なコマンドラインエディタが用意されています.このセクションでは、Linuxの世界で最も広範な2つのコマンドラインエディタについて説明します.
sed
とgawk
です.# sed :
sed options script file
#gawk :
gawk options program file
コマンドライン定義エディタコマンド
#sed test big test
$ echo "This is a test" | sed 's/test/big test/'
This is a big test
$
コマンドラインで複数のエディタコマンドを使用する
# sed -e
$sed -e 's/brown/green/;s/dog/cat/' data1
The quick green fox jumps over the lazy cat
The quick green fox jumps over the lazy cat
The quick green fox jumps over the lazy cat
$
ファイルからエディタコマンドを読み込む
# sed -f
$cat script1
s/brown/green/
s/fox/elephant/
s/dog/cat/
$sed -f script1 data1
The quick green elephant jumps over the lazy cat.
The quick green elephant jumps over the lazy cat.
The quick green elephant jumps over the lazy cat.
$
gawkプログラム
# gawk ,
gawk '{print "Hello John!"}'
$0はテキスト行全体を表します$1はテキスト行の1番目のデータフィールドを表します$2はテキスト行の2番目のデータフィールドを表します$3はテキスト行の3番目のデータフィールドを表します$nはテキスト行のn番目のデータフィールドを表します
$ cat data3
One line of test text.
Two lines of test text.
Three lines of test text.
$
$gawk '{print $1}' data3
One
Two
Three
$
# , -F :
$ gawk -F: '{print $1}' /etc/passwd
root
daemon
bin
sys
sync
プログラムスクリプトで複数のコマンドを使用
$ echo "My name is Rich" | gawk '{$4="Christine"; print $0}'
My name is Christine
ファイルからプログラムを読み込む
$ cat script2
{ print $1"'s home directory is " $6}
$
#gawk -f
$gawk -F: -f script2 /etc/passwd
root 's home directory is /root
daemon 's home directory is /usr/sbin
...
データの処理前にスクリプトを実行
$gawk 'BEGIN {print "Hello World"}'
Hello World
$
$ cat data4
Line 1
Line 2
Line 3
Line 4
$
$gawk 'BEGIN {print "The data4 File Contents:" } {print $0} ' data4
The date4 File Contents:
Line 1
Line 2
Line 3
Line 4
$
データ処理後のスクリプトの実行
$ cat data4
Line 1
Line 2
Line 3
Line 4
$
$gawk 'BEGIN {print "The data4 File Contents:" } { print $0 } END { print "End of File" } ' data4
The date4 File Contents:
Line 1
Line 2
Line 3
Line 4
End of File
$
sedエディタベース
#
s/pattern/replacement/flags
#flags 4 flags
# ,
#g,
#p,
#w file,
$ sed 's/test/trial/2' data5
This is a test of the trial script
This is the second test of the trial script
$
$ sed 's/test/trial/g' data5
This is a trial of the trial script
This is the second trial of the trial script
$
$ cat data6
This is a test line.
This is a different line.
$
$ sed -n 's/test/trial/p' data6
This is a trial line
# -n sed 。 p 。 substitude
#w , :
$ sed 's/test/trial/w test' data6
This is a trial line.
This is a different line.
$
$ cat test
This is a trial line.
# / ! #
#
[address]command
$ sed '2s/dog/cat/' data1
This quick brown fox jumps over the lazy dog
This quick brown fox jumps over the lazy cat
This quick brown fox jumps over the lazy dog
#
/pattern/command
$grep Samantha /etc/passwd
Samantha:x:1001:1002:Samantha,4,,:/home/Samantha:/bin/bash
$ sed '/Samantha/s/bash/csh/' /etc/passwd
Samantha:x:1001:1002:Samantha,4,,:/home/Samantha:/bin/csh
$
#
$sed '2{
> s/fox/elephant/
> s/dog/cat/
> }' data1
#
$sed '3d' data1
This is line number 1
This is line number 2
This is line number 4
$