很抱歉这个简单的问题,但我已经失明了四天的学习和尝试,似乎无法找到正确的语法。
在 cygwin 上使用 sed,我试图用另一个不可打印的字符替换一个不可打印的 ASCII 字符。
这是我的源文件,使用大写文本 [在方括号内] 表示不可打印的 ascii 字符:
myfile.txt:
line one[LF]
line two[LF]
line three[LF]
[SUBSTITUTE][LF]
line four{LF]
line five[LF]
line six[LF]
.
.
.
我想用 TAB 替换 LF。
由于 LF 是十六进制 0A 而制表符是十六进制 09,所以我基本上尝试过:
sed -i 's/\x0A/\x09/g' myfile.txt
这不会改变文件中的任何内容。
当然,我尝试了不同的开关,例如 -b、-e 和 -r,有括号和没有括号,有和没有 /g,额外的反斜杠和没有反斜杠,八进制和十进制符号,一直到精灵符文,绝对没有成功。
我读了一些使用“回声”而不是文件作为来源的答案,他们只是让我感到困惑并且没有用。
其他示例使用“作弊”,例如实际单词 TAB,但它们阻止我学习使用数字的语法,因此我可以将其应用于其他不可打印的字符,而不仅仅是 TAB。
当我尝试“文件”命令时,我得到:
file myfile.txt
file.txt: data
所以,我当然试过:
sed -i -t UTF-8 's/\x0A/\x09/g' myfile.txt
但我的 sed 不支持该 -t 选项。
当我尝试这个时:
oc -c myfile.txt
我正在搜索的 [LF] 字符显示为:
\n
我也试过 \0D 作为我的搜索词,也没有运气。
如果有人想通过显示正确的语法向我提供线索,我将不胜感激。
谢谢。