Tag: シェルスクリプト Tag: awk

シェルスクリプト


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
    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
    do の後に awk で加工するがリストの変数の値をawkではidという変数で使う事が出来ます。

near_p000.txt,near_p001.txt,near_p002.txt~near_p080.txt というファイルがあり、簡単なテキストファイルで、このファイルを一つに結合するのですが、その先頭にどのファイルのデータなのか分かるように、ここではファイルの一部として利用されている3桁の数字に部分を結合後のファイルの行頭に追加します。

000,元の1列目,元の2列目,元の3列目,元の4列目

といった行になります。