現在私はファイルフォルダで作業しています。各ファイルには次の行があります。
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文字になる理由です。