PowerShell のフィルタ定義色々

PowerShell のフィルタで AWK コマンドと同等……同等以上の事ができる!
サンプル1
 入力ファイルと出力ファイルを引数で受け取り、スクリプトファイル内で定義するフィルタで処理する。
sample1.ps1
Param( $in, $out )

# 各行を処理する
Function Line-Process
{
    # 1行目を処理する前
    Begin
    {
        # 行番号を初期化(1 ベース)
        $nLineNo = 0
    }
    
    # 1行目~最終行を処理する
    Main
    {
        # 行番号を更新
        ++ $nLineNo

        # $_ は標準出力の各行を保持
        $_
    }
    
    # 最終行を処理した後
    End
    {
    }
}

Get-Content $in | Line-Process | Out-File -LiteralPath $out
使用例
PS D:\tmp> sample1.ps1 input.txt output.txt
サンプル2
 スクリプトファイル自体でフィルタを定義し、入力ファイルと出力ファイルはスクリプトファイル外で処理する。(sample1.ps1 から Line-Process の中身を取り出したもの)
sample2.ps1
# 1行目を処理する前
Begin
{
    # 行番号を初期化(1 ベース)
    $nLineNo = 0
}

# 1行目~最終行を処理する
Main
{
    # 行番号を更新
    ++ $nLineNo

    # $_ は標準出力の各行を保持
    $_
}
    
# 最終行を処理した後
End
{
}
使用例
PS D:\tmp> Get-Content input.txt | sample2.ps1 | Out-File -LiteralPath output.txt
サンプル3
 サンプル1と2の場合、全体の行数がわからなかったり、各行を処理するときに他の行へアクセスできない。このサンプルではそれを解消する方法を示す。
sample3.ps1
# 標準入力を $stream へ代入
$stream = $($input)

# 各行を処理する
Function Line-Process
{
    # 1行目を処理する前
    Begin
    {
        # 行番号を初期化(1 ベース)
        $nLineNo = 0
    }
    
    # 1行目~最終行を処理する
    Main
    {
        # 行番号を更新
        # $i は $stream の参照用(0 ベース)
        $i = $nLineNo ++

        # $i は標準出力の各行を保持
        # $_ と $stream[$i] は同じ内容
    "{0}`t{1}`t{2}" -f $nLineNo, $_, $stream[ $i ]
    }
    
    # 最終行を処理した後
    End
    {
    }
}
使用例
PS D:\tmp> Get-Content input.txt | sample3.ps1 | Out-File -LiteralPath output.txt

Oracle Database 21c:データベースが作成できない

 Oracle Database 21c Express Edition (XE) をインストール後、データベースを作成するため Database Configuration Assistant を起動しウィザードを進めたところ、エラーが発生し作成できない。わからないため、教えて下さい!

 

 インストールは以下のオフィシャル・サイトをみて行いました。

 

データベースの作成は、以下の様に進めました。

1:標準構成を選択した後、以下を設定し、[次へ]を押下。

  • グローバル・データベース名
  • 管理者パスワード
  • パスワードの確認
  • プラガブル・データベース名

f:id:logical-trip:20220403000946p:plain

 

2:以下の進行状況になると……(次の3を参照)

f:id:logical-trip:20220403001044p:plain

 

3:以下のメッセージが表示された。[続行]ボタンを押下。

f:id:logical-trip:20220403001112p:plain

 

4:以下のメッセージが表示され、先へ進めない。

f:id:logical-trip:20220403001129p:plain

 

 データベースの作成手順は以上です。

 

動作環境

  • OS: Windows 10 Pro 64 ビット
  • RAM: 16GB
  • ストレージ:
    • C ドライブ: 212 GB / 465 GB(Windows のインストール先)
    • D ドライブ: 381 GB / 931 GB(Oracle Database のインストール先: D:\bin\Oracle\21c)
  • セキュリティソフト: カスペルスキー

 

補足

 Oracle データベースは使用した経験はありません。

 (MySQL はインストールも含め使用した経験があります)

 

 上記手順でデータベースを作成する事はできませんでしたが、以下のコマンドでログインし、テーブルを作成する事ができました。

 

>cd  <ORACLE_HOME>\bin

>sqlplus system@localhost/xepdb1

 

 インストールの時点で xepdb1 が作成されているため、新規でデータベースが作成できないのだろうか……。

 

 

 以上です。

 

IP アドレス設定バッチ for Windows

1. 動的設定(DHCP で IP アドレスを自動で割り当てる場合)
ipDynamic.bat
REM 以下の "イーサネット" をイーサネットアダプタの名称に変更する
netsh interface ip set address "イーサネット" dhcp
netsh interface ip set dns "イーサネット" dhcp
2. 静的設定(IP アドレスを自分で設定する場合)
ipStatic.bat
REM 以下の "イーサネット" をイーサネットアダプタの名称に変更する
REM 以下の XXX.XXX.XXX.XXX をそれぞれ、
REM IP アドレス/サブネットマスクデフォルトゲートウェイに変更する
netsh interface ip set address "イーサネット" static XXX.XXX.XXX.XXX XXX.XXX.XXX.XXX XXX.XXX.XXX.XXX
REM 以下の XXX.XXXX.XXX.XXX を DNS サーバのプライマリに変更する
REM (このコマンドの実行でセカンダリの設定はクリアする)
netsh interface ip set dns "イーサネット" static XXX.XXX.XXX.XXX primary
REM 以下の XXX.XXXX.XXX.XXX を DNS サーバのセカンダリに変更する(使用する場合)
netsh interface ip add dns "イーサネット" XXX.XXX.XXX.XXX

ExclusionCtrl

ファイルオープン試験で使えるかな?
本アプリは排他制御でファイルをオープンするツールです。
本ツールでファイルをオープンし、テスト対象のソフトでファイルオープン処理が想定した結果になるか確認する。
リンク

JSON at PowerShell

JSON 読み込み
Get-Content <.JSON> -Raw | ConvertFrom-Json
JSON 書き込み
$o | ConvertTo-Json
サンプル
入力ファイル(input01.json
{
    "root": [
        {
            "name": "A",
            "age": 20,
            "exp": "以下の言語を学んでいます。
C#"
        },
        {
            "name": "B",
            "age": 32,
            "exp": "XYZ"
        }
    ]
}
読み込み
$o = Get-Content D:\tmp\input01.json -Raw | ConvertFrom-Json

$o.root[0].name  # 出力: "A"
書き込み
$o | ConvertTo-Json > output01.json
出力ファイル(output01.json
{
    "root": [
                {
                    "name": "A",
                    "age": 20,
                    "exp": "以下の言語を学んでいます。\r\n・C#"
                },
                {
                    "name": "B",
                    "age": 32,
                    "exp": "XYZ"
                }
            ]
}

LibreOffice Calc 条件書式:セルの値に応じて複数のセルの色や文字の色を変更

セルの値に応じで複数(1 行)のセルの色を変更

手順

  1.  以下の赤枠のように 4 行の表を入力します。
  2.  表の 1 行目を選択します。
    (100 を入力したセルへマウスを移動し、左ボタンを押しっぱなしにする。1 行目の close までマウスを移動し、左ボタンを放します)
  3.  「書式」メニューをクリックして、「条件付き」-「条件」をクリックします。
  4.  以下の画像のように1~3を選択、入力して、4 の[OK]ボタンをクリックします。
     2 は、セル D2(D 列の 2 行目)が close の時、という意味になります。$(ダラー)は固定を表し、D の前に記しているため D 列に固定する、という意味になります。
  5.  条件書式が適用され、1 行目は D 列が close のためグレー表示になりました。
  6.  表の 2 ~ 4 行目にも同様の設定をする方法をここから示します。
     1 行目を選択します。
  7.  続いて、1 の「ほうき」アイコンをクリックします。
  8.  表の 2 行目の 10 を入力したセルにマウスを移動し、マウスの左ボタンを押しっぱなしにします。続けて、表の 4 行目の close を入力したセルまでマウスを移動し、左ボタンを放します。
  9.  前手順で左ボタンを放した瞬間に選択したセルに条件書式が貼り付けられました。(完成)
  10.  条件書式が適用されているか確認。(表の 4 行目がグレーになっているため適用されているのはわかるけど)
     表の 3 行目の open を close に変更します。
 以上です。

LibreOffice Calc 条件書式:セルの値に応じてセルの色や文字の色を変更

 1 つのセルで複数のセルの色を変更する方法は後日アップします。

条件書式を設定した結果(条件は 70 以上に色を付ける)

f:id:logical-trip:20210908232448p:plain

手順

  1.  数字を 4 つ(100, 10, 70, 40)入力します。f:id:logical-trip:20210908233301p:plain
  2.  100 を入力したセルをクリックします。f:id:logical-trip:20210909213504p:plain
  3.  「書式」メニューをクリックして、「条件付き」-「条件」をクリックします。f:id:logical-trip:20210909213930p:plain
  4.  以下の画像のように1~4を選択すると、セルが 70 以上の時に色が変わる様になります。
     4はセルの色や数字の色の指定になります。
     条件や色を決めたら5の [OK] ボタンをクリックします。f:id:logical-trip:20210909222358p:plain
  5.  セルに 100 を入力していたので前手順の4で指定した色になります。

    f:id:logical-trip:20210909214215p:plain

  6.  10, 70, 40 を入力したセルにも同様の設定をする方法をここから示します。
     条件書式を設定しているセルを選択します(100 を入力したセルが既に選択されてるため何もしない)。
    続いて、1 の「ほうき」アイコンをクリックします。f:id:logical-trip:20210909223830p:plain
  7.  10 を入力したセルにマウスを移動し、マウスの左ボタンを押しっぱなしにします。続けて 40 を入力したセルまでマウスを移動し、左ボタンを放します。f:id:logical-trip:20210909214525p:plain
  8. 前手順で左ボタンを放した瞬間に選択したセルに条件書式が貼り付けられます。(完成) f:id:logical-trip:20210909232101p:plain f:id:logical-trip:20210908232448p:plain
 以上です。