gpt4 book ai didi

regex - Linux bash : sed, awk 等工具将行尾正则表达式 '$' 匹配为终端宽度

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:57 25 4
gpt4 key购买 nike

我正在处理相当长的数据行,因此字符数多于终端的宽度。当我使用 sed、awk 等将任何字符附加到每行末尾时,无论终端宽度在哪里,它都会匹配行尾。因此,不是将所需的字符附加到每行的末尾,而是将其放置在每行中间的某个位置,即终端宽度被切断的地方。

如何解决这个问题?

最佳答案

也许您的文件有一个 CRFL(回车 - 换行\r - \n)行结尾不合适(例如 Linux 系统中的 Windows 文件或 ... 或 ...)。如果您将超过一个终端宽度的 a 写入文件(1. 我使用的是 Linux,2. 不要在终端末尾按 enter,在所有许多 a 之后只按一次,然后按 enterctrl-D):

$ cat > pure_file
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa[the only enter and ctrl-D goes here]

您的文件结尾如下所示:

...aaaaLF

然后在末尾添加一个 CR:

$ awk '{print $0 "\r"}' pure_file > cr_infected_file

(或者只使用上面的unix2dos),你的文件结尾看起来像这样:

...aaaaCRLF

现在将字符 X 添加到其末尾:

$ awk '{print $0 "X"}' cr_infected_file
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Xaaaaaaaaaaaaaaaaaaaa

以及尾部外观(在 X 周围添加了 2 个空格,以方便阅读):

...aaaaCR X LF

首先会输出所有 a,然后 CR 将回车符返回到行首(当前行,终端上的第 2 行),然后输出 X

关于regex - Linux bash : sed, awk 等工具将行尾正则表达式 '$' 匹配为终端宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42149566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com