簡體   English   中英

使用bash腳本逐行讀取文件

[英]Read file line by line with bash script

我需要一個bash腳本來逐行讀取文件。 如果正則表達式匹配,則回顯此行。

該腳本如下:

#!/bin/bash

echo "Start!"

for line in $(cat results)
do
   regex = '^[0-9]+/[0-9]+/[0-9]+$'
   if [[ $line =~ $regex ]]
   then
      echo $line
   fi
done

它正在打印文件內容,但顯示此警告:

./script: line 7: regex: command not found

錯誤在哪里?

其他人已經提供了關於使用的實際正則表達式的提示。 循環遍歷文件中所有行的正確方法是:

#!/bin/bash

regex='[0-9]'

while read line
do
    if [[ $line =~ $regex ]]
    then
        echo $line
    fi
done < input

在這種情況下的問題是=符號周圍的空格regex = '^[0-9]+/[0-9]+/[0-9]+$'

它應該是

regex='^[0-9]+/[0-9]+/[0-9]+$'

ShellCheck會自動向您發出警告,並建議在何處引用您的變量以及如何逐行閱讀(您目前正逐字逐句)。

消除正則表達式周圍的空間:

regex='^[0-9]+/[0-9]+/[0-9]+$'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM