Linuxで特定のファイル列にスペースを追加する方法

Linuxで特定のファイル列にスペースを追加する方法

次の形式の1000行を含むテキストファイルがあります。

001122 abc def ghi
334455 xyz aaa bbb
667788 ccc ccc ddd

Linuxコマンドを使用して一部の列にスペースを追加してこの形式に変換するにはどうすればよいですか?

00 11 22 abc def ghi
33 44 55 xyz aaa bbb
66 77 88 ccc ccc ddd

ベストアンサー1

素朴だが直接:

$ sed 's/\(..\)\(..\)\(..\)/\1 \2 \3/' file
00 11 22 abc def ghi
33 44 55 xyz aaa bbb
66 77 88 ccc ccc ddd

つまり、各行の 2 文字の最初の 3 つのセットを一致させて収集し、置換文字列にスペースを挿入することで区切ります。

素敵ですが、考えが必要です。

$ sed 's/../ &/3; s/../ &/2' file
00 11 22 abc def ghi
33 44 55 xyz aaa bbb
66 77 88 ccc ccc ddd

最初の式は、..各行の3番目の項目を空白に置き換え、その後に..一致するものが続きます。繰り返しますが、2番目のゲームです。

おすすめ記事