使用ksh脚本获取子字符串

时间:2013-07-24 06:31:18

标签: awk ksh substr

我正在使用ksh脚本来确定文件中的分隔符使用awk。我知道这个分隔符将始终位于第一行的4位置。我遇到的问题是在特定文件中用作分隔符的字符是*,因此在脚本返回文件列表时,不是在变量中返回*。以下是我的文件中的示例文本以及我的脚本:

文件中的文字:

XXX*XX*     *XX*XXXXXXX.......

这是我的脚本看起来的样子(我没有在我面前的剧本,但是你得到了这个小说):

delimiter=$(awk '{substr $0, 4, 1}' file.txt)
echo ${delimiter} # lists files in directory..file.txt file1.txt file2.txt instead of * which is the desired result

提前谢谢你,
安东尼

2 个答案:

答案 0 :(得分:1)

Birei对你的问题是正确的。但是你的AWK表达似乎只对第一行感兴趣。您可以将其替换为:

'NR==1 {print substr($0, 4, 1)}'

然后你可以做一个简单的事情:

echo "$delimiter"

答案 1 :(得分:0)

shell正在解释delimiter变量的内容。您需要引用它以避免此行为:

echo "${delimiter}"

它会打印*