1. ホーム
  2. スクリプト・コラム
  3. その他

linux シェル学習ノート 1日目

2022-02-07 12:21:09

以下は、Shellの学習1~2日目のメモです。

--------- 私はデリミタ- --------。

<スパン ハードウェアは実行に移り、カーネルはハードウェアで操作する。

コマンドパーサーです。

シェルスクリプトの構成要素


  1. システムコマンド
  2. <スパン テキスト処理ツール(sort, grep, sed, awk...)
  3. 変数
  4. 条件付き判定
  5. ループ構造
  6. 機能
    <スパン シェルスクリプトセンター(SSC)

---------- ---------- --------

<スパン 非負のGrep / awk

<スパン 日間。統計情報 Wc

ソート sort|head / sed
フィールド処理 awk

<スパン データ領域決定 awk |wc

表示テキスト:echo [オプション] テキスト

        -n 自動改行しない

        -e エスケープを解析する

<スパン             警告音を鳴らす

            c 最後に改行がない場合

            f 改行

<スパン             r エンター

<スパン カラーテキスト


Echo -e "33[40;35m...]"

echo "Hello,world"


echo -e "33[40;35mHell,world33[0m"



sort [オプション] 入力ファイル

    -o 出力ファイル

<スパン     -辞書順 a-z で並べ替え

    -n 数字のサイズ0〜9で出力

    -r 逆順出力 z-a 9-0

    -k 分類がドメイン上の数値分類であることを指定します。

    -t フィールドスプリッター; ノンスペースまたはタブキーでフィールドを分割します。


その他の /etc/passwd のページ分割表示

sort -d /etc/passwd|more 真ん中の|は倒置表記です。先に処理したものを後に処理するようにする ソートを先にする。ページングを後にする


sort -k3 -n -r -t: /etc/passwd|more


<スパン 大きなものから小さなものまで

wc [引数] [ファイル名]を指定します。

    -c 文字数を数える

    -l 行数を数える

    -w 数えた単語数 区別するためのスペース


diff [オプション] file/directory file/directory

diff /etc/passwd /etc/passwd.bak

    -q 差異がある場合のみ表示し、詳細は表示しない

    -c 内側のテキストをすべて表示し、相違点をマークします。

    -b は空白文字の違いをチェックしない

    -B 空白行をチェックしない

    -r サブディレクトリ内のファイルを比較します。

<スパン grep検索マッチ 正規表現に対応


グレップ

    -c マッチするパターンの行番号表記のみを出力する

    -I 大文字と小文字の区別をしない

    -n 各行の行番号の前に表示する

    -v 逆出力、不一致行の表示

    -f ファイル マッチする文字列のリストが filezhong

grep '[Tt]his' file1.txt セットケース

grep '^[^#]' file2.txt は行頭にマッチしません。


grep "s...n" file3.txt 任意の文字にマッチします。


sedライン編集コマンド
    s 代替品

    i インサート

    a 追加

    d 一致する行をすべて削除する

    D 最初にマッチした行を削除する

<スパン sedでできること("line" ベース)

<スパン     削除

<スパン     変更

<スパン     追加

    挿入

<スパン     交換


sed -n '1,4p' /etc/passwd p は print -n で元のファイルを表示しない 1~4行目を印刷する。

sed '/80/D' file.txt 80 行目の最初の出現箇所を削除する

sed 's/var/usr/g' file.txt すべての var を usr g に置き換えて、すべてを表示します。

sed '50,$s/help/man/g' file.txt 50行目からヘルプの最終行までをmanの最初の49行に関係なく置き換えます。

awk は行だけでなく列も処理することができ、どの行のどの列かを特定することができます。

awk [オプション] 'awk スクリプト' 入力ファイル

    -F fs 入力レコードのフィールド区切り文字としてfsを使用 = sort -t

    -f ファイル名 ファイルから awk_script (awk スクリプト) を読み込む filename

    -v var=value awk_script 用の変数を設定する

awk 用の組み込み変数

<テーブル <カラー <カラー 変数 機能 <スパン デフォルト FS=大文字のF フィールドセパレータを入力します。 <スパン スペースまたはタブ RS レコードセパレータの入力 改行 OFS =out FS 出力フィールドのセパレータ スペースまたはタブ ORS 出力レコードセパレータ 改行 NF 一般的な使用方法 現在のレコードの空白でないフィールドの番号 NR 一般的に使用されている 全ファイルから読み出すレコード番号


awk -F : '{print NR,$1,$2}' /etc/passwd


awk -F : '{print NR,$1,$NF}' /etc/passwd $NF 最後の行を抽出します。

awk -F : 'NR%10==5{PRINT nr,$0}' /etc/passwd NR= 現在処理中の行数 divide by 10 remainder=5 出力用の現在の行数 $0 全行出力、例えば 5, 15, 25 print out

awk -F : 'NR==8,NR==13 {print NR,$0}' /etc/passwd 8行目と13行目を指定します。

<スパン awk の仕組み (ツール)


NF $NR $1 1列目 $2 2列目 $0 一行全体

<スパン 実際のテスト

awk -F: '{print $1,$3}'/etc/passwd


awk -F: '{print $1,$NF}'/etc/passwd


awk -F: '{print NR,$1,$NF}'/etc/passwd NR 行番号


awk -F: 'NR==5,NR==8{print NR,$1,$NF}'/etc/passwd 5-8行目を指定する。


awk -F: 'NR%10==5{print NR,$1,$NF}'/etc/passwd 10 で割って余りを求めます。


<スパン サンプルコーステスト

<スパン 1. grep -v "-" file.txt マイナス記号のあるデータをすべて削除 -v none の場合は - のみが表示されます。

2. wc -l file.txt すべての行を表示する grep -v "-" file.txt |wc -l 負数のない行をすべて数える

3. sort -n -r -k4 file.txt |sed -n '1p' sort fourth column no separator (i'e s space), -n number -r from largest to smallest sed pipe show first line sed -n does not show original file.

    sort -n -r -k4 file.txt |head -1 最初のデータを読み込む head 最初の行

4. awk '{if($NF>3){print $0}}' file.txt NF 最後の列が 3 より大きい場合、1 行全体を表示する

5. awk '{if($4>0,&&$4<15){print $0}}' file.txt 4列目をリストアップ 0より大きい 15より小さい 全体の行を出力する

    awk '{if($4>0,&&$4<15){print $0}}' file.txt |wc -l 行を表示する

<スパン 運動する


  1. grepとawk

    awk '{if($1>200801011){[print $0}}'file.txt

2.

<スパン 注文のレビューを処理しています。

統計テキストwc

<スパン テキストソートソート

テキスト/ディレクトリ比較の差分

<スパン ファイルのキー行を検索する grep / sed

<スパン 行内文字列の追加、削除、変更 sed

指定した列を列テキストで表示する awk

列テキストで計算する awk

列テキストでの条件付き選択 awk