特定の行長の行の中央と末尾に文字を挿入する

特定の行長の行の中央と末尾に文字を挿入する

現在私はファイルフォルダで作業しています。各ファイルには次の行があります。

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

予想される出力と一致するように、カンマの後にスペースを追加しました。これが2番目の一致が43文字ではなく44文字になる理由です。

おすすめ記事