を使用して、各文字の前と後の3文字列を取得すると、以下のように出力されます:は、私が期待している何のawk
[文字hがnullである前に「#に割り当てるe 『の文字H がされた後。』 」、 "L"、 "L"]
[文字Eは、前に "H"。キャラクタE後 あり、 "L"、 "L"、 "O"]
[文字L前文字「」が「l」および「o」の後に「h」および「e」である。
[文字lの前には "h"と "e"があります。文字 の後は、 "l"と "o"です。]
[文字lの前は "h"、 "e"、 "l"です。 の文字lが "o"の場合]
[文字の前は "e"、 "l"、 "l"です。 文字oはnullで、「#」を割り当てた後]
# # # h e l l
# # h e l l o
# h e l l o #
h e l l o # #
e l l o # # #
# # # w o n d
# # w o n d e
# w o n d e r
w o n d e r f
o n d e r f u
n d e r f u l
d e r f u l #
e r f u l # #
r f u l # # #
入力ファイル:。
h e l l o
w o n d e r f u l
コード:
awk -v s1="# # #"
'BEGIN{v=length(s1)}
{$0=s1 $0 s1;num=split($0, A,"");
for(i=v+1;i<=num-v;i++){
q=i-v;p=i+v;
while(q<=p){
Q=Q?Q OFS A[q]:A[q];q++
};
print Q;Q=""
}
}' InputFile
しかし、私が得た結果は次のとおりです。
# # # h e l
# # h e l l
# # h e l l
# h e l l o
# h e l l o #
h e l l o #
e l l o # #
e l l o # #
l l o # # #
# # # w o n
# # w o n d
# # w o n d
# w o n d e
# w o n d e
w o n d e r
o n d e r
o n d e r f
n d e r f
n d e r f u
d e r f u
d e r f u l
e r f u l #
e r f u l #
r f u l # #
r f u l # #
f u l # # #
解決方法私を案内してください。おかげ
が、私は少し良くやったと「」OFSを設定することによって。 – Yaron