我想使用sed命令替换文本文件中的换行符、制表符、引号和反斜杠,以便在C语言中将其用作char常量,但我不知道从何开始。最好能在输出中保留换行符,添加'\n',然后是双引号来关闭文本行,接着是回车换行符,再加上另一个双引号来重新打开行,例如:
line1
line2
将变成
"line1\n" "line2\n"
有没有人至少可以指点我正确的方向? 谢谢
将变成
"line1\n" "line2\n"
有没有人至少可以指点我正确的方向? 谢谢
尝试将以下内容作为sed
命令文件:
s/\\/\\\\/g
s/"/\\"/g
s/ /\\t/g
s/^/"/
s/$/\\n"/
NB: 第三行有一个嵌入的制表符,如果使用 vi
插入,请按 ^v <tab>
s/\\/\\\\/g
- 转义反斜杠s/"/\\"/g
- 转义引号s/ /\\t/g
- 转换制表符s/^/"/
- 前置引号s/$/\\n"/
- 追加 \n 和引号'"'`printf %s "$your_text" | sed -n -e 'H;$!b' -e 'x;s/\\/\\\\/g;s/"/\\"/g;s/ /\\t/g;s/^\n//;s/\n/\\n" \n "/g;p'`'"'
use strict;
use warnings;
my @c = <STDIN>;
print "static char* c_str = {\n";
foreach (@c) {
my @s = split('');
print qq(\t");
printf("\\x%02x", ord($_)) foreach @s;
print qq("\n);
}
print "};\n";
sed -e 's/\\/\\\\/g;s/"/\\"/g;s/ /\\t/g;s/^/"/;s/$/\\n"/' $@
。 - mpontillo