目前我正在处理一个文件文件夹,每个文件都有一些行,如下所示:
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 个字符。