簡體   English   中英

如何檢查字符串是否包含特定的十六進制值

[英]How to check if string contains specific hex value

我在使用BASH腳本時遇到麻煩

我有一個變量,該變量在curl命令中填充有字符串,該字符串通常是兩個帶有空格的單詞。 該空間不是\\ x20而是十六進制\\ x0A,這導致我想反擊回車。

我無法控制返回的字符串,因為它是從Google獲取數據的

有沒有一種簡單的方法來檢查字符串變量是否包含\\ x0A hex? 並且可以操縱字符串,將\\ x0A的值更改為\\ x20

提前致謝 ;)

您可以使用bash的內置參數擴展將所有空格轉換為純空格:

a=$' a\rb\nc'
$ echo "$a"
ba
c
$ a="${a//[[:space:]]/ }"

在其他shell上,您可以使用tr進行相同的操作,但要以調用外部進程和創建子shell為代價:

$ a=$(printf '%s' "$a" | tr '[:space:]' ' ')

無論哪種情況,結果都是:

$ echo "$a"
 a b c

有沒有一種簡單的方法來檢查字符串變量是否包含\\ x0A hex? 並且可以操縱字符串,將\\ x0A的值更改為\\ x20

是的,是的。

正如Tom所建議的,您可以在任何shell中使用bash或tr中的參數擴展來操縱字符串。

如果您首先要檢查字符串是否包含特殊字符,則bash的內置測試功能將完成此工作。

$ s=$'a\rb\r'; [[ $s == *$'\n'* ]] && echo "Yes"
$ s=$'a\rb\n'; [[ $s == *$'\n'* ]] && echo "Yes"
Yes

暫無
暫無

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

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