用於測試每個輸入行的標準 Unix/Linux 實用程式

用於測試每個輸入行的標準 Unix/Linux 實用程式

我正在編寫一個 Bash 腳本,它應該測試輸入中的每一行是否符合特定條件。

有沒有一種方法可以採用謂詞並將所有行減少到 0 或 1,這樣我就不必使用 Linux 發行版中常規標準或現成的實用程式自己編寫循環程式碼?

答案1

範例資料(我們想要包含“的所有行”):

$ cat x
not this
want this
not that
want that

你可以使用awk:

  • 1如果該行與正規表示式匹配,則列印 a/want/
  • 0如果該行不匹配,則列印 a
$ cat x | awk '{if(match($0,/want/)){print 1}else{print 0}}'
0
1
0
1

或嘗試sed:

  • 將僅包含的行替換10(否則它們將作為 傳遞1
  • 替換包含“的行「與一個1
  • 將不是 a 的行替換1為 a0
$ cat x | sed -re 's/^1$/0/' -e 's/^.*want.*$/1/' -e 's/^[^1][^$].*$/0/'
0
1
0
1

相關內容