Shell-Script

在具有特定行長的行的中間和末尾插入字元

  • May 7, 2019

目前我正在處理一個文件文件夾,每個文件都有如下幾行:

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

有誰知道如何處理這個?

更新您可以點擊此連結獲取測試文件

試試這個:

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

或者如果你在 mac os 上:

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

我在逗號後添加了一個空格以匹配預期的輸出。這就是為什麼第二個匹配是 44 個字元而不是 43 個字元的原因。

引用自:https://unix.stackexchange.com/questions/517517