[英]shell script of grep single line in bash script
我有一個具有以下格式的文件:
123 2 3 48 85.64 85.95
Park ParkName Location
12 2.2 3.2 48 5.4 8.9
現在,我想編寫一個Shell腳本以從該文件中提取行。 每行的第一項是一種標記。 對於不同的標志,我將進行不同的處理。 請參閱下面的代碼:
head= ` echo "$line" | grep -P "^\d+" `
if [ "$head" != "" ]; then
(do something...)
fi
head=` echo "$line" | grep -P "^[A-Z]+" `
if [ "$head" != "" ]; then
(do something...)
fi
該代碼有效。 但是我不喜歡寫2“ if”的復雜方式。 我想要簡單的東西:
if [ "$head" != "" ]; then
(do something...)
elif [ "$head" != "" ]; then
(do something...)
fi
有什么想法嗎?
純bash解決方案如何? Bash具有內置的正則表達式功能,您可以使用~
字符來觸發。 請注意,盡管使用bash讀取行處理巨大的文件不會產生最佳性能。
#!/bin/bash
file=$1
while read line
do
echo "read [$line]"
if [[ $line =~ ^[0-9] ]]; then
echo ' Processing numeric line'
elif [[ $line =~ ^[A-Za-z] ]]; then
echo ' Processing a text line'
fi
done < $file
這個怎么樣。 我想它將滿足您的要求
文件
123 2 3 48 85.64 85.95
公園ParkName地點
12 2.2 3.2 48 5.4 8.9
script.sh
while read line
do
echo $line | grep -qP "^\d+" && echo "Line starts with Numbers"
echo $line | grep -qP "^[a-zA-Z]+" && echo "Line Starts with String"
done < file
輸出: -
bash script.sh
行以數字開頭
行以字符串開頭
行以數字開頭
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.