シェルスクリプト
bashのプロンプトの変更
プロンプトが長くなりすぎてコマンド入力で見づらい・・・。シェルでPS1の設定を変更すると変更可能
例1 ・・・ $のみ表示
export PS1="$ "
例2・・・ユーザー名、フォルダ名と $ を表示
export PS1="\u[\W] $ "
参考
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/002cngprmpt.html
テキストファイルなどの加工結果をforのループで使いたい
例) psqlのデータベースのテーブル情報をまとめて表示
#!/bin/bash
for DB in `psql -U postgres -l -A -t | cut -f1 -d"|"`; do
echo ===== DB: $DB ==============================================
psql -U postgres $DB -c "\\d"
echo ""
done
ここで、
`psql -U postgres -l -A -t | cut -f1 -d"|"`
は、psqlのデータベースの一覧を加工しますので、例えば次の様になります。
databasesample1
databesesample2
databasesample3
:
databasesampleX
というリストとなり、$DB 変数にdatabasesample1からdatabasesampleXに代入されて、do~done内等で使えます。
forで変数にセットしたリストを利用しawkにもその値を渡す
- 2016-07-20
do の後に awk で加工するがリストの変数の値をawkではidという変数で使う事が出来ます。NOLIST="000 001 002 003 004 005 006 007 008 009 010 \ 011 012 013 014 015 016 017 018 019 020 \ 021 022 023 024 025 026 027 028 029 030 \ 031 032 033 034 035 036 037 038 039 040 \ 041 042 043 044 045 046 047 048 049 050 \ 051 052 053 054 055 056 057 058 059 060 \ 061 062 063 064 065 066 067 068 069 070 \ 071 072 073 074 075 076 077 078 079 080" for a in $NOLIST;do awk 'BEGIN{OFS=",";} {print id,$1,$2,$3,$4}' id=$a near_p$a.txt; done > all.csv
near_p000.txt,near_p001.txt,near_p002.txt~near_p080.txt というファイルがあり、簡単なテキストファイルで、このファイルを一つに結合するのですが、その先頭にどのファイルのデータなのか分かるように、ここではファイルの一部として利用されている3桁の数字に部分を結合後のファイルの行頭に追加します。
000,元の1列目,元の2列目,元の3列目,元の4列目
といった行になります。