比较两个文件并在新文件中写入不匹配的数字

时间:2015-07-16 02:26:00

标签: linux shell unix diff

我有两个文件,其中ifile1.txt是ifile2.txt的子集。

ifile1.txt   ifile2.txt
    2            2
    23           23
    43           33
    51           43
    76           50
    81           51
   100           72
                 76
                 81
                 89
                100

欲望输出

ofile.txt
   33
   50
   72
   89

我正在尝试

diff ifile1.txt ifile2.txt > ofile.txt

但是它提供了不同的输出格式。

3 个答案:

答案 0 :(得分:2)

由于您的文件已排序,因此您可以使用comm命令:

comm -1 -3 ifile1.txt ifile2.txt > ofile.txt

-1表示省略第一个文件的唯一行,-3表示省略两个文件中的行,因此这只显示第二个文件唯一的行。

答案 1 :(得分:1)

这将完成你的工作:

diff file1 file2 |awk '{print $2}'

答案 2 :(得分:1)

你可以尝试:

if (isset($_POST['submit'])) 
{
    if (isset($_POST['ID'])) {
    $sql = "SHOW COLUMNS FROM Employees";
    $result = mysqli_query($con,$sql);
     while($row = mysqli_fetch_array($result)){
                $tempname = $row['Field'];

                // Changes Function
                $sqlCheck = "SELECT * FROM Employees WHERE ID='".$_GET["id"]."' AND (".$row['Field']." NOT LIKE '".$_POST[$tempname]."')";
                $result3 = $con->query($sqlCheck);
                if ($result3->num_rows > 0) {
                // output data of each row
                while($row3 = $result3->fetch_assoc()) {
                    $sql3 = "INSERT INTO `Changes` (`Table`, `ID`, `Attribute`, `DateChanged`, `HRUser`, `OldValue`, `NewValue`)

VALUES ('Employees', '".$_GET["id"]."', '".$row["Field"]."', '".date("d/m/Y h:i:sa")."', '$login_session', '$row3[$tempname]', '$_POST[$tempname]')";
                    if ($con->query($sql3) === TRUE) {
                    } else {
                    echo "Error: " . $sql3 . "<br>" . $con->error;
                    }
                }
                }