0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Liunx テキスト操作 チートシート

Last updated at Posted at 2025-03-04

正規表現

正規表現 意味
. 任意の 1 文字
^ 行の先頭
$ 行の末尾
? 直前の表現が 0 回もしくは 1 回
* 直前の表現が 0 回以上連続
+ 直前の表現が 1 回以上連続
{n} 直前の表現が n 回連続
{n,} 直前の表現が n 回以上連続
{n,m} 直前の表現が n 回以上 m 回以下連続
() グループ化
(ab)+ → "ab"、"aba"、"ababc" にマッチ
[] 文字クラス
[abc] → "a"、"b"、"c" いずれかを含む行にマッチ
[^abc] → a,b,c のいずれかを含まない行にマッチ(否定
[a-g] → アルファベット順の a ~ g のいずれかを含む行にマッチ
| OR(左右のどちらか)
'aaa|bbb' → aaa または bbb を含む行に一致(\ はエスケープ用)

文字クラス

学習中

正規表現やパターンマッチングで使われる概念。

特定の文字の集合を表し、特定の範囲や種類の文字とマッチさせるために使われる。

文字クラス 説明 マッチする例
[abc] a または b または c abc
[0-9] 0 から 9 の数字 37
[a-z] アルファベット(小文字) mz
[A-Z] アルファベット(大文字) MZ
[a-zA-Z] アルファベット(大文字・小文字) bQ
[^a-zA-Z] アルファベット以外(否定 1¥$
POSIX の文字クラス 意味
[:alpha:] アルファベット(A-Z, a-z
[:digit:] 数字(0-9
[:alnum:] 英数字(A-Za-z0-9
[:upper:] 大文字(A-Z
[:lower:] 小文字(a-z
[:space:] 空白・タブ・改行
[:punct:] 句読点(,.!

POSIX の文字クラス [:alpha:] だけを書くと、単なる文字列とみなされてしまい、正規表現のパターンとして認識されないため、POSIX の文字クラスは「通常の文字クラス」 [...] の中に埋め込む必要がある。

正規表現として認識されない
$ grep '[:alpha:]' file.txt
正規表現として認識される
$ grep '[[:alpha:]]' file.txt

$ grep

global regular expression print

テキストファイルや 標準入力 の中から、特定のパターン(文字列、正規表現 を利用して、検索対象が含まれる 行を検索する

データの受け取り方には「ファイルからデータを受け取る」方法と「標準入力からデータを受け取る」方法の 2 種類がある。

ファイルからデータを受け取る
$ grep パターン ファイル
標準入力からデータを受け取る
$ コマンド | grep

オプション

大文字小文字の違いを無視して検索する(ignore case)
$ grep -i パターン ファイル
パターンに一致しない行を表示する(invert match)
$ grep -v パターン ファイル

ディレクトリ内から特定のファイルを検索することもできる。

ディレクトリ内のファイルを検索する
$ grep パターン ディレクトリ
サブディレクトリを検索対象に含める(recursive)
$ grep -r パターン ディレクトリ

$ tr

translate

標準入力 から受け取った文字列を変換し、標準出力 に出力する。

「文字セット1」を「文字セット2」に変換する
$ tr 文字セット1 文字セット2
指定した文字を削除する(delete)
$ tr -d 文字セット

文字セットには 文字クラス を利用することもできる。

$ tail

ファイルの末尾を表示する。

デフォルトでは末尾 10 行文が出力される。

テキストファイルの末尾 10 行を表示する
$ tail ファイル

オプション

表示する行数を指定する(number)
$ tail -n 行数 ファイル

-f オプションを使用すると、ログファイルなど、リアルタイムで更新されるファイルの末尾を監視できる。変更があった場合、即座に新しい行を表示する。

ファイルの末尾を監視する(follow)
$ tail -f ファイル

$ head

$ tail と逆で、ファイルの先頭行を表示する。

デフォルトでは先頭の 10 行文が出力される。

テキストファイルの先頭 10 行を表示する
$ head ファイル
表示する行数を指定する(number)
$ head -n 行数 ファイル

$ cut

テキストファイルから、特定のフィールドや文字を抽出する。

CSV ファイルやログファイルなど、区切り文字で整理されたデータを扱う際に便利。

データの受け取り方には「ファイルからデータを受け取る」方法と「標準入力からデータを受け取る」方法の 2 種類がある。

ファイルからデータを受け取る
$ cut ファイル
標準入力からデータを受け取る
$ コマンド | cut

オプション

文字単位で切り取る(character)
$ echo "abcdefg" | cut -c 1-5 # 1文字目から5文字目までを取得
abcde

$ echo "abcdefg" | cut -c 1,3,5 # 1,3,5文字目を取得
フィールド単位で切り取る(field)
$ echo "apple    banana    orange" | cut -f 2 # 2つ目のフィールドを取得(デフォルトではタブ区切り)
区切り文字を指定する(delimiter)
$ echo "apple,banana,orange" | cut -d ',' -f 2 # 2つ目のフィールドを取得(カンマ区切り)

$ split

指定したファイルを複数の小さなファイル(チャンク、塊)に分割する。

基本構文
$ split ファイル 出力ファイルの接頭辞

出力ファイルの接頭辞(プレフィックス)は、ファイルを分割した際に使用される。デフォルトでは x が使用される。

分割後のファイル名に接頭辞を指定する
$ split ファイル prefix_ # prefix_a, prefix_b などのファイル名で分割される。

接尾辞(サフィックス)はデフォルトでは aaab などになっているが、数値に変更することができる。

分割後のファイル名に数字の接尾辞を指定する
$ $ split -d -l 10 ファイル prefix_ # 10行ごとに分割し、接尾辞が 00, 01, 02... となる
指定した行ごとに分割する(lines)
$ split -l 行数 ファイル
指定したバイトごとに分割する(bytes)
$ split -b バイト数 ファイル 
$ split -b 1 ファイル # 1 バイトごと
$ split -b 1k ファイル # 1 キロバイトごと
$ split -b 1m ファイル # 1 メガバイトごと
$ split -b 1g ファイル # 1 ギガバイトごと

$ sort

出力先を明示的に指定しない場合、並び替え結果は 標準出力 に吐き出される。

並び替え結果は標準出力に送信される
$ sort ファイル

オプション

アルファベット、数値の降順に並び替える(reverse)
$ sort -r ファイル
数値の昇順に並び替える(numeric)
$ sort -n ファイル
重複を削除しながら並び替える(unique)
$ sort -u ファイル
並び替え結果を別ファイルに出力する
$ sort ファイル -o 出力先ファイル

$ uniq

unique

隣接する重複行を削除する。

出力先を明示的に指定しない場合、処理結果は 標準出力 に吐き出される。

隣接する重複行を削除する
$ uniq ファイル 出力先ファイル
処理結果は標準出力に送信される
$ uniq ファイル

連続する重複のみを削除する ため、事前に $ sort しておくと、全ての重複を除去することができる。

オプション

一度しか出現しないものを表示する(unique)
$ uniq -u ファイル
重複している行だけを表示する(duplicate)
$ uniq -d ファイル
重複行をカウントする(count)
$ uniq -c ファイル
大文字小文字を区別しない(ignore case)
$ uniq -i ファイル

$ less

ファイルの内容をページ単位で表示する
$ less ファイル
標準入力から受け取ったデータをページ単位で表示する
$ コマンド | less
操作 説明
q 終了する
f / Space 次のページに進む(forward)
b 前のページに戻る(back)
/ j 次の行に移動
/ k 前の行に移動
G ファイルの末尾に移動
g ファイルの先頭に移動
/文字列 文字列を前方検索
?文字列 文字列を後方検索
n 検索で見つかった次の場所に移動
N 検索で見つかった前の場所に移動

$ wc

word count

テキストファイルの行数、単語数、文字数、バイト数などをカウントする。

データの受け取り方には「ファイルからデータを受け取る」方法と「標準入力からデータを受け取る」方法の 2 種類がある。

ファイルからデータを受け取る
$ wc ファイル
標準入力からデータを受け取る
$ コマンド | wc

オプション

行数をカウントする(lines)
$ wc -l ファイル
単語数をカウントする(words)
$ wc -w ファイル
文字数をカウントする(characters)
$ wc -c ファイル
バイト数をカウントする(bytes)
$ wc -b ファイル

$ sed

Stream Editor

$ vi などの対話形式のエディタと異なり、テキストファイルや 標準入力 のデータに対して、一括で置換、挿入、削除、追加などの処理を行うことができる。

ストリームエディタ とも呼ばれる。

使用したデータファイルには変更が加わらない。内部的には、読み込まれたデータは一時的にバッファに格納され、処理結果は 標準出力 に出力されている。

基本構文
$ sed '編集コマンド' ファイル

オプション

置換(subustitute)
$ sed 's/検索文字列/置換文字列/オプション' ファイル
$ sed 's/foo/bar/' ファイル # 最初に見つかった foo を bar に置換
$ sed 's/foo/bar/' ファイル # 行内のすべての foo を bar に置換
削除(delete)
$ sed '3d' ファイル  # 3行目を削除
$ sed '2,4d' ファイル  # 2行目から4行目を削除
$ sed '/foo/d' ファイル # foo を含む行を削除
出力(print)
$ sed -n '5p' ファイル # 5行目を出力
$ sed -n '2,4p' ファイル # 2行目から4行目を出力
追加(append)
$ sed '3a 追加テキスト' ファイル  # 3行目の後に "追加テキスト" を追加
追加(inseret)
$ sed '3i 挿入テキスト' ファイル  # 3行目の後に "挿入テキスト" を挿入

$ find

$ vim

vim を起動する
$ vim ファイル名

$ vim に様々な モード があり、特定のキーを押すことによってこれを切り替え、編集を行うことができる。

モードの切り替えは必ずノーマルモードを介して行う必要がある

例えば「挿入モード」から直接「検索モード」に切り替えることはできない。

モード、操作 キー、説明
ノーマルモード Esc
挿入モード I(Insert)
上書きモード SHIFT + R
検索モード /:カーソルからファイルの末尾に向かって検索
?:カーソルからファイルの先頭に向かって検索
切り替えた後は、検索文字列を入力して Enter を押す。検索実行後、ノーマルモードに戻り、N キー(Next)を押すと、次のヒット結果まで飛ぶことができる。前のヒット結果まで戻る場合は SHIFT + N キーを同時押しする。
選択モード V
切り替え後は キーで選択範囲を決定する。この状態で Y キーを押すと、選択範囲をクリップボードにコピーすることができる(ヤンク:yank)。貼り付けは SHIFT + P で行う。行をまるごとコピーしたい場合は Y キーを2回押す。
アンドゥ U(Undo)
取り消し
リドゥ Ctrl + R 同時押し(Redo)
取り消しの取り消し
末尾に移動 SHIFT + G 同時押し
終了する ノーマルモードに遷移後に入力するq:Quit、w:Write)
保存しない::qEnter
保存しない(編集した場合)::q!Enter
保存する::wqEnter
ファイル名を指定して保存する::wq ファイル名Enter
vim から抜けずにコマンドを実行する ! コマンド
削除に関わるコマンド 説明
dw カーソル以降の単語を削除
nx カーソルから右の n 文字分を削除
dd カーソル行を削除
ndd カーソル行から n 行分を削除
D カーソルから同じ行の末尾までを削除
0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?