【发布时间】:2014-04-22 02:05:32
【问题描述】:
我正在寻找变量中的特定行,例如
echo "$CodeDesc"
0x19 ERASE(6)
0x1A MODE SENSE(6)
0x1B START STOP UNIT
0x1C RECEIVE DIAGNOSTIC RESULTS
0x1D SEND DIAGNOSTIC
0x1E PREVENT ALLOW MEDIUM REMOVAL
0x23 READ FORMAT CAPACITIES
0x24 SET WINDOW
例如如果我只是在寻找“MODE SENSE(6)”,我正在使用 grep 和 awk(也尝试使用 sed)
desc="$( grep "0x1A" <<< "$CodeDesc" | awk '{print substr($0, index($0,$2))}' )"
这确实给了我正确的字符串,即“MODE SENSE(6)”,但是当我回显时,它与一些字符串重叠:
echo "DESC: \"$desc\""
给我:
"SC:"MODE SENSE(6)
请注意 \" 已移到开头,并且缺少 DE。
稍后我还将打印同一个变量以及另一个变量:
echo -e "${desc}${code}"
我希望这会打印出来:
MORE SENSE(6) 0x1A 1
但是我得到了:
0x1a 1NSE(6)
我不知道这是怎么回事,任何帮助将不胜感激。
【问题讨论】:
-
看起来你有一个没有 LF 的 CR。
-
你从哪里得到字符串?如果它来自一个文件,它可能有奇怪的字符。要“清理”它,您可以使用
dos2unix。
标签: bash