Text-Processing

為什麼要避免“嚴格的柱狀”輸入格式?

  • April 17, 2018

Doug McIlroy,Unix 管道的發明者和 Unix 傳統的創始人之一,當時有這樣的說法

$$ McIlroy78 $$: (ii) 期望每個程序的輸出成為另一個未知程序的輸入。不要用無關資訊使輸出混亂。避免嚴格的列式或二進制輸入格式。不要堅持互動式輸入。

嚴格的柱狀數據對我來說聽起來不錯,所以我可能不明白他的意思。

這是什麼意思,為什麼不好?

我認為他的意思是對齊的列,而不是一般的列數據。這就是我無論如何都會嚴格理解的方式。例如:

壞的:

1    200 3
100  3   400

好的:

1 200 3
100 3 400

換句話說,製作易於電腦閱讀的文件,而不是人類閱讀的文件。添加空格以對齊事物使您和我更容易理解它們,但可能會使需要解析它們的程序感到困惑。

例如,如果我要用於cut獲取上述每個範例的第二個欄位,它會在第一個欄位上失敗:

$ cut -d' ' -f 2 bad


$ cut -d' ' -f 2 good 
200
3

由於多餘的空格,bad文件的第二個欄位是空格。但是,它在good文件中按預期工作。

引用自:https://unix.stackexchange.com/questions/212194