お知らせ

現在サイトのリニューアル作業中のため、表示が崩れているページが存在することがあります。
2024/01/22 17:10 OS::Linux::コマンド

置換をするためのコマンドだが、PCREは基本使えない(自前でビルドすれば使える)

大抵のケースでPerlを使った方が楽だが、Busybox系のディストリなどで入っていない環境では重宝する。

オプション

  • -l入力からケツ改行を消す
    CLI入力するとケツに改行が入るのでそれを除去できる
  • -p入力行を処理する
  • -eスクリプトを流せるphp -rのようなもの
  • -i[ext]ファイル置換。extに指定があるとバックアップファイルが生える
    • sed -i.bak -e 's/aaa/bbb/' path/to/file

チートシート

改行を改行コードに変換

コマンドを使う必要がある

入力

cat <<'EOF' | sed ':a;N;$!ba;s/\n/\\n/g'
aaa
bbb
ccc
ddd
EOF

出力

aaa\nbbb\nccc\nddd

コマンドの意味合い

コマンド 意味合い
; 恐らくコマンドの終わり
: ラベル。今回の:aはラベルa
N 入力の次の行をパターンスペースに読み込む
$ 最終行にマッチ
! マッチしない(アドレスとコマンドの間に入れる必要がある)
b ラベルに分岐する。baはラベルaに分岐。gotoみたいなもんだと思う

つまり入力の次の行をパターンスペースに読み込み、最終行にマッチしなければ入力の次の行をパターンスペースに読み込み、マッチすればs/\n/\\n/gが発動するのだと思われる。

2024/01/22 17:03 OS::Linux::コマンド

おなじみのアーカイブ作成コマンド。迷ったらヘルプ読んだほうが早い

圧縮編

基本

  • tar -zvcf foo.tar.gz foo
z: --gzip, gzip
v: --verbose, 詳細、別になくてもいい
c: --create, アーカイブの新規作成
f: --file, 保存するファイル名

tar -cfだとtarballになると思われる

おまけ

T: --files-from, アーカイブ対象ファイルのリストを読み込む。LF区切りのテキスト
--exclude: <pattern>, アーカイブから除外するパスのパターン

展開編

  • tar -zxvf foo.tar.gz foo
z: --gzip, gzip
x: --extract, 展開
v: --verbose, 詳細、別になくてもいい
f: --file, 展開するファイル名