使用ksh脚本获取子字符串



我使用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

提前感谢您,
Anthony

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

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

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

echo "$delimiter"

shell正在解释delimiter变量的内容。你需要引用它来避免这种行为:

echo "${delimiter}"

它将打印*

最新更新