1

この文字列を連結するのに問題があります。私の目標は/folder/p/t/e

test.txtには、文字列「test」が含まれています。

cat test.txt|cd /folder/p/`awk '{print substr($,0,1)}'`/`awk '{print substr($0,1,1)}'`

出力/folder/p/t/しているので、2番目のsubstr部分に問題があると思います。

誰かが私がこれを行う方法に光を当てるのを手伝ってもらえますか?

ありがとう!

4

3 に答える 3

3

最初のawkインスタンスはすべてのstdinをキャプチャしているため、2番目のインスタンスはその中の何も読み取っていません。stdinを読み取るものはすべて、単一のコマンドでなければなりません。

cat test.txt | cd /folder/p/`awk '{print substr($0,0,1)"/"substr($0,2,1)}'`
于 2013-03-24T06:26:53.490 に答える
1
FOO=$(< test.txt)
cd /folder/p/${FOO:0:1}/${FOO:1:1}
于 2013-03-24T06:27:40.470 に答える
0

awkへの2回目の呼び出しは、から何かを取得すると想定していますがtest.txt、取得しません。からのテキストcat test.txtはパイプの後にコマンドにパイプされ、サブシェル(最初のawk)のコマンドはすべての入力を受け取り、2番目の入力は残しません。これawkはkojiroがすでに応答しているためです。

両方のコマンドをマージawkすると問題は解決しますが、これが他のシェルで機能することは保証されていません。多くの人bashが一般的に「シェル」と混同しているので、よりポータブルなソリューションがベータ版で作成されたものになることは注目に値すると思います。

于 2013-03-24T06:20:39.860 に答える