在特定行长的行的中间和末尾插入字符

在特定行长的行的中间和末尾插入字符

目前我正在处理一个文件文件夹,每个文件都有一些行,如下所示:

abcde    fghij
abcde    fghij
jklmn    pqrst
.....    .....

这些行的具体行长为 43。每行的中间是制表符,末尾是 Windows 换行符^M。我想执行以下步骤:

 First, select these lines with line length 43
 Second, replace the tab in the middle with a comma
 Third, replace the line break character at the end with a dot.

预期的输出应该是这样的:

abcde, fghij.
abcde, fghij.
jklmn, pqrst.

我尝试过sth如下,但失败了:

 sed -i -e 's/^.\{43\}\r/ ./g' input.file

有谁知道如何处理这个问题?

更新您可以点击这个链接得到一个测试文件。   

答案1

尝试这个:

sed -ne '/^.\{43\}$/s/\t/, /g;/^.\{44\}$/s/\r/./gp' input.file > new.file

或者如果您使用的是 mac 操作系统:

sed -ne $'/^.\{43\}$/s/\t/, /g;/^.\{44\}$/s/\r/./gp' input.file > new.file

我在逗号后面添加了一个空格以匹配预期的输出。这就是为什么第二个匹配是 44 个而不是 43 个字符。

相关内容