私はこの奇妙な現象を私は理解していません。私はawkで何か重要なことを逃していると思う。私は、SIGNALを含む行があるときに、行全体を 'c'という文字列に累積的に連結したい。文字列は 'a'と 'b'の連結で始まり、うまく動作します。awk文字列連結が機能しない2(シェル設定エラー?)
ファイルin.dat
:
SIGNAL Hello1!
ファイルtt.awk
:
BEGIN { a = "a"; b = "b"; c = a b; }
/SIGNAL/ { c = c " " $0; }
END { print c; }
私はawk -f tt.awk in.dat
を行うとき、私は(予想通り)を取得:
ab SIGNAL Hello1!
私が見に期待
SIGNAL Hello2!1!
:
ab SIGNAL Hello1! SIGNAL Hello2!
は、私は私のCentOSのシェル上でそれをやっているその後、私は再びawk -f tt.awk in.dat
を行う
SIGNAL Hello1!
SIGNAL Hello2!
とget:0
今私はにin.dat
を変更します(私の~/.cshrc
ファイルの設定を束ねて)。私はCygwinシェルでこれらをチェックして、期待通りに正常に動作します。私のCentOSシェル設定に何か問題があります。どうなり得るか?
あなたのコードで期待通りの結果( 'ab SIGNAL Hello1!SIGNAL Hello2!')が得られました。あなたのシェル設定は何ですか? – isedev
'in.dat'はDOSの行末を持っていますか? –
'cat -vet file'のDOS行末のchkです。行末に '^ M $'がある場合は 'dos2unix file'を使います。皆さんお元気で。 – shellter