我正在尝试将管道分隔的输入文件转换为固定宽度的文件。下面是输入文件和预期输出。我还包括了我正在尝试的脚本。我尝试了几种变化而没有成功。我是Linux的新手,并且一直试图拼凑一些代码以帮助我更好地理解,但我失败了,希望有人能够帮助我。
awk -v FS =" |" FIELDWIDTHS =" 9 1 2 1 2 2 5 5 7 10 9 11" -v OFS ="" ' {打印$ 1,$ 2,$ 3,$ 4,$ 5,$ 6,$ 7,$ 8,$ 9,$ 10,$ 11}' input.txt> output.txt的
$ cat input.txt
# Input File
#
aa|bbb|cccc|ddddd|
#
$ cat output.txt
# Output File
#
aabbbccccdddddd
#
答案 0 :(得分:1)
你不需要awk,即使你这样做也与FIELDWIDTHS没有任何关系,也无法想象你从哪里得到任何东西。您所需要的只是$ cat input.txt
# Input File
#
aa|bbb|cccc|ddddd|
#
$ tr -d '|' < input.txt
# Input File
#
aabbbccccddddd
#
:
margin: 0px 10px 0px 25px;
要开始学习如何使用shell和awk,请获取Chris Johnson撰写的“Shell Scripting Recipes”和Arnold Robbins撰写的“Effective Awk Programming”,第4版。