ファイル内容の並べ替え

ファイル内容の並べ替え

コンテンツを含むファイルがあります。

123 OneTwoThree
234 TwoThreeFour
345 ThreeFourFive

このファイルを次のように変換したいと思います。

OneTwoThree  123
TwoThreeFour  234
ThreeFourFive  345

ここで、最初の列項目は位置25で変更する必要があります。元のファイルの2番目の列が25文字を超える場合は、残りの文字はスキップする必要があります。これは、25日以降のすべての文字を削除する必要があることを意味します。 たとえば、上記のサンプル出力ファイルでは、最初の列は1位置26にあります。

awk、sed、または同様のコマンドラインツールを使用してこれを実行できますか?

答え1

何について:

 awk '{printf "%-25s %s\n",$2,$1}' file

望むより:

cat file
123 OneTwoThree
234 TwoThreeFour
345 ThreeFourFive
789 abcdefghijklmnopqrstuvwxyz
999 abcdefghijklmnopqrstuvwxyzABC

出力:

awk '{printf "%-25s %s\n",$2,$1}' file
OneTwoThree               123
TwoThreeFour              234
ThreeFourFive             345
abcdefghijklmnopqrstuvwxyz 789
abcdefghijklmnopqrstuvwxyzABC 999

答え2

2番目のフィールドの25文字目以降を切り捨てるには、awkでsubstr関数を使用できます。

文書

cat file
123 OneTwoThree
234 TwoThreeFour
345 ThreeFourFive
456 abcdefghijklmnopqrstuvwxyz

出力

awk '{printf("%-26s %s\n", substr($2,0,25),$1)}' file

OneTwoThree                123
TwoThreeFour               234
ThreeFourFive              345
abcdefghijklmnopqrstuvwxy  456

関連情報