首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Linux awk if 語句需搭配輸入流或檔案

     編輯:程式設計綜合問答

現象


awk ' {if(1>0){printf "helloworld\n"}}'

執行後無輸出,類似卡住。

原因

awk **預設從標準輸入 (stdin) 讀取資料**,逐行處理。無輸入流時會**等待使用者輸入** (類似 cat 無參數),因此看似卡住。

正確用法

1. 管道提供輸入


echo "dummy" | awk '{if(1>0) printf "helloworld\n"}'
# 輸出: helloworld

2. 指定檔案


awk '{if(1>0) printf "helloworld\n"}' /etc/passwd
# 對每一行輸出 helloworld

3. BEGIN 區塊 (無需輸入)


awk 'BEGIN {if(1>0) printf "helloworld\n"}'
# 立即輸出 helloworld,不讀取輸入

awk 執行流程


BEGIN { ... }      # 1. 無輸入前執行一次
/pattern/ { ... }  # 2. 每行匹配 pattern 執行
{ ... }            # 3. 每行皆執行 (無 pattern)
END { ... }        # 4. 所有輸入處理完執行

常見模式

需求寫法
單次運算/初始化BEGIN { ... }
處理每行資料{ ... } 或 /pattern/ { ... }
最終統計/輸出END { ... }
無輸入單次執行awk 'BEGIN { ... }' 或 echo "" | awk '{ ... }'

理解 awk 需輸入流驅動,善用 BEGIN 區塊進行無輸入運算,即可避免「卡住」困擾。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved