【发布时间】:2020-05-23 21:02:38
【问题描述】:
我有这个文件,我想在其中添加一行,但在使用 alt 字符时我似乎遇到了问题。 这是脚本片段:
#testfile.txt
Main
├────►projectA
└────►projectC
sed "/├────►projectA/a ├────►projectB/" testfile.txt
sed 似乎没有找到“├────►projectA”部分。 Grep 甚至不会找到它。
grep "├────►projectA" testfile.txt
grep 什么都不返回。
那么你怎样才能找到它,以便我可以在它下面添加我的行?
编辑:我发现了我的问题。我在 sed 命令中使用了错误的字符。这个脚本在不同的系统上,所以我不得不做一个例子。
我正在尝试在 /a 之后添加空格,但它会修剪它。有没有办法保留空间?
(例如“[5 个空格] ├────►projectB”)
我不能在上面的行中添加空格,因为 stakoverflow 格式也会修剪它。所以我说[5个空格]来表示空格的数量。
【问题讨论】:
-
我怀疑您的终端中的编码不同,文件中的编码也不同,或者您的文件中可能还有其他无法打印的字符从终端中丢失。请发布like
hexdump -C testfile.txt的输出和echo "├────►projectA" | hexdump -C的输出,并将比较字节。注意:sed中的a命令不以/结尾。例如,如果我复制并粘贴您提供的代码,sed和grep对我有用。testfile.txt是如何生成的? -
根据你想变得多么挑剔,
sed "/projectA/a ├────►projectB/"可能会很麻烦,但我更喜欢尽可能精确。 -
按照你为我写的那样工作,尽管它在末尾添加了
/,它不在 A 和 C 行上。 -
是的,我注意到如果我不使用 alt 字符,这将按预期工作。是的,我注意到我最后也得到了斜线。我确信这是导致问题的 alt 字符。当我在第一部分(使用 projectA)中没有它时,它可以工作。
-
我看到了我的问题。我用错了字符。