2011-11-27 81 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

看起來您的文件有一個新行,並且數據不在一行中。 –