2011-11-27 49 views
2

在Ubuntu上使用脚本作为#/bin/sh时,一切似乎都很好,但现在使用与红色帽子上的#/bin/bash相同的脚本,这部分是创建问题。awk部分的bash脚本不能正常工作

awk '{ 

    for (i = NF - p - 2; i < NF - 2; i++) 

    printf "%s", ($i (i < NF - 2 - 1 ? OFS : ORS)) 

    }' p="$_padlen" RS= ORS='\n' decrypt.txt > pad.txt 

也这一..

awk '{ 

    for (i = NF - l - p - 2; i < NF - p - 2; i++) 

    printf "%s", ($i (i < NF - p - 2 - 1 ? OFS : ORS)) 

    }' l="$_length" p="$_padlen" RS= ORS='\n' decrypt.txt > prot_n_data.txt 

假设$padlen=1$length=13这些是各自的输出...

[[email protected] scripts]# cat decrypt.txt 
00 15 00 15 00 0d dc ff 61 62 63 64 0a 00 01 11 

其中最后三个字节其是00 01 1100是填充,而01是填充长度。

[[email protected] scripts]# cat pad.txt 
0a 

[[email protected] scripts]# cat prot_n_data.txt 
00 15 00 15 00 0d dc ff 61 62 63 64 0a 00 01 11 00 15 00 15 00 0d dc ff 
61 62 63 64 

虽然所需的输出是...

# cat pad.txt 
00 

# cat prot_n_data.txt 
00 15 00 15 00 0d dc ff 61 62 63 64 0a 

完全stucked没有得到任何线索......请大家帮帮我。

或至少给我建议一些替代...

编辑: *

这是建议的解决方案不工作了假设$_padlen=3$_length=1159另一个示例文件。

[[email protected] scripts]# cat decrypt.txt 
00 17 00 17 04 87 5d c5 74 68 69 73 20 69 73 20 
73 61 6d 70 6c 65 20 64 61 74 61 20 74 6f 20 73 
65 6e 64 0a 77 65 20 73 68 6f 75 6c 64 20 63 6f 
6e 63 65 6e 74 72 61 74 65 20 6f 6e 20 69 74 2e 
0a 74 68 69 73 20 69 73 20 73 61 6d 70 6c 65 20 
64 61 74 61 20 74 6f 20 73 65 6e 64 0a 77 65 20 
73 68 6f 75 6c 64 20 63 6f 6e 63 65 6e 74 72 61 
74 65 20 6f 6e 20 69 74 2e 0a 74 68 69 73 20 69 
73 20 73 61 6d 70 6c 65 20 64 61 74 61 20 74 6f 
20 73 65 6e 64 0a 77 65 20 73 68 6f 75 6c 64 20 
63 6f 6e 63 65 6e 74 72 61 74 65 20 6f 6e 20 69 
74 2e 0a 74 68 69 73 20 69 73 20 73 61 6d 70 6c 
65 20 64 61 74 61 20 74 6f 20 73 65 6e 64 0a 77 
65 20 73 68 6f 75 6c 64 20 63 6f 6e 63 65 6e 74 
72 61 74 65 20 6f 6e 20 69 74 2e 0a 74 68 69 73 
20 69 73 20 73 61 6d 70 6c 65 20 64 61 74 61 20 
74 6f 20 73 65 6e 64 0a 77 65 20 73 68 6f 75 6c 
64 20 63 6f 6e 63 65 6e 74 72 61 74 65 20 6f 6e 
20 69 74 2e 0a 74 68 69 73 20 69 73 20 73 61 6d 
70 6c 65 20 64 61 74 61 20 74 6f 20 73 65 6e 64 
0a 77 65 20 73 68 6f 75 6c 64 20 63 6f 6e 63 65 
6e 74 72 61 74 65 20 6f 6e 20 69 74 2e 0a 74 68 
69 73 20 69 73 20 73 61 6d 70 6c 65 20 64 61 74 
61 20 74 6f 20 73 65 6e 64 0a 77 65 20 73 68 6f 
75 6c 64 20 63 6f 6e 63 65 6e 74 72 61 74 65 20 
6f 6e 20 69 74 2e 0a 74 68 69 73 20 69 73 20 73 
61 6d 70 6c 65 20 64 61 74 61 20 74 6f 20 73 65 
6e 64 0a 77 65 20 73 68 6f 75 6c 64 20 63 6f 6e 
63 65 6e 74 72 61 74 65 20 6f 6e 20 69 74 2e 0a 
74 68 69 73 20 69 73 20 73 61 6d 70 6c 65 20 64 
61 74 61 20 74 6f 20 73 65 6e 64 0a 77 65 20 73 
68 6f 75 6c 64 20 63 6f 6e 63 65 6e 74 72 61 74 
65 20 6f 6e 20 69 74 2e 0a 74 68 69 73 20 69 73 
20 73 61 6d 70 6c 65 20 64 61 74 61 20 74 6f 20 
73 65 6e 64 0a 77 65 20 73 68 6f 75 6c 64 20 63 
6f 6e 63 65 6e 74 72 61 74 65 20 6f 6e 20 69 74 
2e 0a 74 68 69 73 20 69 73 20 73 61 6d 70 6c 65 
20 64 61 74 61 20 74 6f 20 73 65 6e 64 0a 77 65 
20 73 68 6f 75 6c 64 20 63 6f 6e 63 65 6e 74 72 
61 74 65 20 6f 6e 20 69 74 2e 0a 74 68 69 73 20 
69 73 20 73 61 6d 70 6c 65 20 64 61 74 61 20 74 
6f 20 73 65 6e 64 0a 77 65 20 73 68 6f 75 6c 64 
20 63 6f 6e 63 65 6e 74 72 61 74 65 20 6f 6e 20 
69 74 2e 0a 74 68 69 73 20 69 73 20 73 61 6d 70 
6c 65 20 64 61 74 61 20 74 6f 20 73 65 6e 64 0a 
77 65 20 73 68 6f 75 6c 64 20 63 6f 6e 63 65 6e 
74 72 61 74 65 20 6f 6e 20 69 74 2e 0a 74 68 69 
73 20 69 73 20 73 61 6d 70 6c 65 20 64 61 74 61 
20 74 6f 20 73 65 6e 64 0a 77 65 20 73 68 6f 75 
6c 64 20 63 6f 6e 63 65 6e 74 72 61 74 65 20 6f 
6e 20 69 74 2e 0a 74 68 69 73 20 69 73 20 73 61 
6d 70 6c 65 20 64 61 74 61 20 74 6f 20 73 65 6e 
64 0a 77 65 20 73 68 6f 75 6c 64 20 63 6f 6e 63 
65 6e 74 72 61 74 65 20 6f 6e 20 69 74 2e 0a 74 
68 69 73 20 69 73 20 73 61 6d 70 6c 65 20 64 61 
74 61 20 74 6f 20 73 65 6e 64 0a 77 65 20 73 68 
6f 75 6c 64 20 63 6f 6e 63 65 6e 74 72 61 74 65 
20 6f 6e 20 69 74 2e 0a 74 68 69 73 20 69 73 20 
73 61 6d 70 6c 65 20 64 61 74 61 20 74 6f 20 73 
65 6e 64 0a 77 65 20 73 68 6f 75 6c 64 20 63 6f 
6e 63 65 6e 74 72 61 74 65 20 6f 6e 20 69 74 2e 
0a 74 68 69 73 20 69 73 20 73 61 6d 70 6c 65 20 
64 61 74 61 20 74 6f 20 73 65 6e 64 0a 77 65 20 
73 68 6f 75 6c 64 20 63 6f 6e 63 65 6e 74 72 61 
74 65 20 6f 6e 20 69 74 2e 0a 74 68 69 73 20 69 
73 20 73 61 6d 70 6c 65 20 64 61 74 61 20 74 6f 
20 73 65 6e 64 0a 77 65 20 73 68 6f 75 6c 64 20 
63 6f 6e 63 65 6e 74 72 61 74 65 20 6f 6e 20 69 
74 2e 0a 74 68 69 73 20 69 73 20 73 61 6d 70 6c 
65 20 64 61 74 61 20 74 6f 20 73 65 6e 64 0a 77 
65 20 73 68 6f 75 6c 64 20 63 6f 6e 63 65 6e 74 
72 61 74 65 20 6f 6e 20 69 74 2e 0a 0a 0a 0a 0a 
0a 0a 0a 0a 0a 0a 0a 00 00 00 03 11 

我用的命令是..

[[email protected] scripts]# awk '{printf $0}' decrypt.txt | awk 'NF{for (i=NF-l-p-1; 
i<NF-p-1;i++) printf $i" "; print ""}' p=3 l=1159 
awk: (FILENAME=- FNR=1) fatal: attempt to access field -71 

l简单地计算为wc -w decrypt.txt|cut -d " " -f1减去p减去2

+0

三元运算符条件从来就不是真的。你确定这是你提到的在Ubuntu上的确切脚本吗? –

+0

据我记得是的,它是相同的脚本....但无论如果可能建议我一些替代我已指定什么是我想要的输出? –

+0

我已经更新了答案。你能告诉我这是否可行吗? –

回答

1

试试这个(您可能需要测试它针对几个样品)

[jaypal~/Temp]$ cat file.txt 
00 15 00 15 00 0d dc ff 61 62 63 64 0a 00 01 11 

对于Pad.txt:

[jaypal~/Temp]$ awk 'NF{for (i=NF-p-1;i<NF-1;i++) printf $i; print ""}' p=1 file.txt 
00 

对于Prot_n_data.txt:

[jaypal~/Temp]$ awk 'NF{for (i=NF-l-p-1;i<NF-p-1;i++) printf $i" "; print ""}' p=1 l=13 file.txt 
00 15 00 15 00 0d dc ff 61 62 63 64 0a 

更新:

由于资料文件重叠成一个新的生产线,NF必须处理不同。 NF是特定记录上的字段数(默认为一行)。

pad.txt

awk 'BEGIN{RS=""} {for (i=NF-p-1;i<NF-1;i++) printf $i" "; print ""}' p=1 file.txt | sed 's/..\{47\}/&\n/g' 

prot_n_data。txt

awk 'BEGIN{RS=""} {for (i=NF-l-p-1;i<NF-p-1;i++) printf $i" "; print ""}' p=3 l=1159 file1.txt | sed 's/..\{47\}/&\n/g' 
+0

尝试这样...'[根@本地脚本]#AWK'{对于(I = NF-P-1;我

+0

如果OK,然后可以请你做你的解密一只猫。 txt文件,并把它与您的问题一起? –

+0

看起来您的文件有一个新行,并且数据不在一行中。 –