PHPで言語処理100本ノック 2015(第2章:前半)

www.cl.ecei.tohoku.ac.jp

10. 行数のカウント

<?php
echo substr_count(file_get_contents($argv[1]), "\n");
echo "\n";

確認

$ wc -l hightemp.txt

11. タブをスペースに置換

<?php
echo str_replace("\t", " ", file_get_contents($argv[1]));

確認

$ expand -t 1 hightemp.txt

12. 1列目をcol1.txtに,2列目をcol2.txtに保存

<?php
$col1 = '';
$col2 = '';
$explodedByNLC = explode("\n", file_get_contents($argv[1]));
foreach ($explodedByNLC as $index => $row) {
    if ($index === count($explodedByNLC) - 1) {
        break;
    }
    $explodedByTab = explode("\t", $row);
    $col1 .= $explodedByTab[0]."\n";
    $col2 .= $explodedByTab[1]."\n";
}
file_put_contents('./col1.txt', $col1, LOCK_EX);
file_put_contents('./col2.txt', $col2, LOCK_EX);

確認

$ cut -f 1 hightemp.txt > col1_sh.txt
$ cut -f 2 hightemp.txt > col2_sh.txt

13. col1.txtとcol2.txtをマージ

<?php
$result = '';
$col1 = explode("\n", file_get_contents($argv[1]));
$col2 = explode("\n", file_get_contents($argv[2]));
foreach ($col1 as $index => $row) {
    if ($index === count($col2) - 1) {
        break;
    }
    $result .= $row . "\t" . $col2[$index] . "\n";
}
file_put_contents('./13.txt', $result, LOCK_EX);

確認

$ paste col1.txt col2.txt > 13_sh.txt

14. 先頭からN行を出力

<?php
for($i = 0; $i < $argv[2]; $i++) {
    echo explode("\n", file_get_contents($argv[1]))[$i]."\n";
}

確認

$ head -n 7 hightemp.txt