在bash中连接字符串

时间:2013-03-24 06:14:25

标签: bash unix concatenation

我在连接这个字符串时遇到了麻烦。我的目标是/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/所以我认为它的第二个子部分有问题。

任何人都可以帮助阐明我如何做到这一点吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

你的第一个awk实例正在捕获所有stdin,所以你的第二个没有读取任何内容。无论什么读取标准输入都必须是一个命令。

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

答案 1 :(得分:1)

FOO=$(< test.txt)
cd /folder/p/${FOO:0:1}/${FOO:1:1}

答案 2 :(得分:0)

您假设第二次拨打awk的电话会从test.txt获得,但事实并非如此。 来自cat test.txt的文本通过管道发送到管道后面的命令,并且子shell中的命令(第一个awk)接收到所有输入,第二个awk没有输入,因为kojiro已经回答了。

虽然合并两个awk命令将解决问题,但不能保证这在其他方面有效 炮弹。因为很多人一般会混淆bash和'shell',所以我认为值得注意的是,Beta可以使用更便携的解决方案。