0
0

More than 1 year has passed since last update.

2022-07-28 カンマ区切りの文字列を標準入力で受け取り、要素の数を出力する PHP スクリプト

Posted at

前書き

以下のようなデータについて、各行のカラムの数を数える必要があり、シェルのコマンドで実現しようとすると難儀したので PHP でスクリプトを書いた。

A, B, C
A, B, C
A, B, C
A, B, C
A, B, C

A, B, C


A, B, C
A, B, C
A, B, C
A, B, C
A, B, C
A, B, C
A, B, C

A, C
A, C
A, C
C, A
C, A
C, A

欲しい出力

3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
0
3 A, B, C
0
0
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
0
2 A, C
2 A, C
2 A, C
2 C, A
2 C, A
2 C, A

作成した PHP スクリプト

<?php
while (true) {
	$line = fgets(STDIN);
	if ($line===false) {
		break;
	}
	$line=trim($line);
	if (empty($line)) {
		echo sprintf('%s %s%s', "0", $line, PHP_EOL);
		continue;
	}
	$values = explode(",", $line);
	echo sprintf('%s %s%s', count($values), $line, PHP_EOL);
}

実行結果

[root@localhost ~]# cat z.sh
cat <<EOF | php a.php
A, B, C
A, B, C
A, B, C
A, B, C
A, B, C

A, B, C


A, B, C
A, B, C
A, B, C
A, B, C
A, B, C
A, B, C
A, B, C

A, C
A, C
A, C
C, A
C, A
C, A
EOF
[root@localhost ~]# sh ./z.sh
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
0
3 A, B, C
0
0
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
3 A, B, C
0
2 A, C
2 A, C
2 A, C
2 C, A
2 C, A
2 C, A

Ref

PHP: I/O streams - Manual

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0