カテゴリー : Linux

sed コマンドでファイルを上書き保存する方法

sed コマンドでファイルを上書き保存する方法を調べたので自分用メモ。

-i オプションを付けて上書き保存

sed -i -e '1d' input.txt

リダイレクト > を使った上書き保存

sed -e '1d' input.txt > output.txt
cp output.txt input.txt

どう考えても sed -i の方が便利ですね。

iconv で変換できない不正な文字を除外するには -c オプションを使えばいい

Linux 上でデータベースから出力した CSV ファイルの文字コードを UTF-8 から Shift JIS に変換しようとしたら、変換できない文字が含まれていたみたいで illegal input sequence at position というエラーが発生して処理途中で終了してしまいました。

$ iconv -f utf-8 -t sjis -o output-sjis.csv input.csv
iconv: illegal input sequence at position 652782

-c オプションをつけると処理が途中で止まることなく、不正な文字を出力から除外して最後まで処理してくれます。

$ iconv -c -f utf-8 -t sjis -o output-sjis.csv input.csv

ヘルプにちゃんと記載されてました。

$ iconv --help
Usage: iconv [OPTION...] [FILE...]
Convert encoding of given files from one encoding to another.
 
 Input/Output format specification:
  -f, --from-code=NAME       encoding of original text
  -t, --to-code=NAME         encoding for output
 
 Information:
  -l, --list                 list all known coded character sets
 
 Output control:
  -c                         omit invalid characters from output
  -o, --output=FILE          output file
  -s, --silent               suppress warnings
      --verbose              print progress information
 
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version
 
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.
 
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

CSV ファイルを Excel で開くために Shift JIS に変換するなんて作業からは、そろそろ卒業したい気分です。

[Linux] タブ文字やスペースを削除するコマンドなら tr がカンタンに使えてオススメ

Linux でタブ文字やスペースを削除するのは tr コマンドに -d オプションを付けることでカンタンにできるみたいです。

# タブ文字を削除する
tr -d '\t'
 
# 半角スペースを削除する
tr -d ' '

tr コマンドは Mac でも使えるので Mac ユーザにもおすすめです。

以下 tr コマンドの使い方です。

tr  文字を一括変換する

構文
tr [Option] set1 [set2]

オプション
-c set1をset1に含まれない文字で置き換える
-d set1の文字を削除する
-s 同じ連続した文字を1文字に置き換える
-t set1をset2と同じ文字列長に合わせる
set1 文字のセットを指定する
set2 文字のセットを指定する

[Linux] 多段 ssh/scp の設定

複数のサーバを経由して ssh や scp コマンドを叩きまくるのが面倒くさいので直接 ssh/scp できる設定を .ssh/config ファイルに追加しました。

多段 ssh/scp の設定方法

設定前はローカル環境で ssh server1 した後に server1 にて ssh server2 という手順で2回 ssh していました。

# .ssh/config file
Host server2.example.com
  ProxyCommand ssh server1.example.com nc %h %p
  IdentityFile    ~/.ssh/server1_example_com.pem
  User            ec2-user

設定後は server1 を介さずに直接 ssh server2 できるようになります。

scp コマンドでのファイル転送も下記のように直接できるようになるので超便利です!

scp ~/Downloads/spam.csv server2:

複数サーバを経由して ssh や scp をする機会がある方はぜひ設定してみてください。


参考情報

ロードアベレージを理解する

load average についてちゃんと理解できてなかったので、参考になった記事をメモっておく。

naoya さんの記事にあるように 4 core の OS でのロードアベレージの見方が分かっていなかったので、こういう記事は本当にありがたい。