我有一个内容为的文件
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