重新排列文件内容

重新排列文件内容

我有一个内容为的文件

123 OneTwoThree
234 TwoThreeFour
345 ThreeFourFive

我想把这个文件转换成这样的

OneTwoThree  123
TwoThreeFour  234
ThreeFourFive  345

此处,第一列条目必须在第 25 位处替换。如果原始文件第二列的字母多于 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

如果要在第二个字段的第 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

相关内容