□技術メモ - Unix シェル ※管理人の個人的な技術メモです。このページの内容の実行結果について 管理人はいかなる責任も負いかねますのでご自身の責任でお試しください。 ----------------------------------------------------------- ○リダイレクトについて ・標準エラー出力を表示しない場合 コマンド > /dev/null ・ディスクリプタをまとめる ディスクリプタは以下のように番号が振ってある。 0:標準入力, 1:標準出力, 2:標準エラー出力 標準エラー出力先が標準出力と同じ出力先になる。 コマンド 2>&1 ○パイプ ・コマンド1 | コマンド2 コマンド1の標準出力をコマンド2の標準入力につなげる。 コマンド3,4...がある場合は出力結果を次々に処理していく。 ○指定のフォルダ配下をgrepする find /フォルダ名 -type f -print | xargs grep 文字列 /dev/null ○sed (stream editer) ・ls -l | sed s/aaa/bbb/ # s/aaa/bbb/ でaaa→bbbに文字列を変換する(最初の文字列のみ) ・sed s/aaa/bbb/g ファイル1 ファイル2 # ファイル1の内容を変換→ファイル2に出力 /gがつくと全て変換する ・ls -l | sed 's/[1-9]/n/g' # 変換元は正規表現が可能。''で囲うことで意図しない解釈をされることを防ぐ (確認中) ・cat file | sed 's/\([0-4]\).\([5-9]\)/\1n\2m/g' # \(〜\)で指定した場合は、変換後の指定部分で\1, \2, ... で参照できる。 ○awk ・cat ファイル名 | awk -F , '/abc/ {print $1,$3,$5}' # awkは全ての行に対して変換を行う。-Fでデリミタを指定できる。デフォルトは半角スペース、上記の場合は , 区切りになる。 # /abc/の部分は正規表現。この場合はabcを含む行が取得対象になる。, 区切りにした1,3,5番目の文字が表示される。