如何使用無法輸入的鍵盤字元?

如何使用無法輸入的鍵盤字元?

我正在製作一個bash腳本來抓取weather.com來獲取天氣預報。我需要處理一行具有不尋常字元的文字。正文如下:

30°F高 35°高 52°高 45°高 43°高

數字和字母之間有一個小圓圈。這是代碼:

#!/bin/bash

clear

lynx --dump http://www.weather.com/weather/5-day/New+York+NY+10001 | \
egrep '   Today |   Tonight ' -A 22 | awk 'BEGIN {print "\n\t\t\b\b\b\b\b\bTHE FIVE DAY\
WEATHER REPORT FOR THE NYC: 10001\n"} \
/[0-9][0-9]*[a-z|A-Z]+/{print $1"\t\t"$2" "$3"\t\t"$4" "$5"\n"}' 2>> error.txt

這沒有輸出。

答案1

最簡單的方法是使用點來匹配度數符號。

/[0-9][0-9]*.[a-z|A-Z]+/

例如

$ echo -e "30\0260FHigh" \
| awk '/[0-9][0-9]*.[a-z|A-Z]+/ { print "yes" }'

yes

(\0260 是問題中度數符號的八進位)

如果你想完全匹配它,你必須在使用的編碼中識別它的值。在您問題的文本中,它似乎是 0xb0。

 $ echo -e "30\0260FHigh" \
 | awk '/[0-9][0-9]*\xb0[a-z|A-Z]+/ {print "yes" }'

 yes

\0260 和 \xb0 只是說明了表示同一件事的兩種方式。

答案2

現代 Linux shell 非常支援 Unicode。事實上,我認為所有數據都被視為UTF-8。

我運行這段程式碼沒有問題:

$ echo ° | awk '/°/{print "found it"}'
found it

如果您正在製作 shell 腳本,請確保使用 UTF-8 而不是 ASCII 格式。

相關內容