我试图以自动方式编写简单的shell脚本。 解析我的字符串并将解析后的字符串连接到原始文件上下文中。
但是,当我使用awk命令执行此操作时,虽然我发现我查找的字符串已经解析得很好但它没有用。
以下是我的代码。
for file in ./*.txt
do
fileName="$( string $file | rev | cut -d. -f2 | rev)"
echo $fileName
awk '{print($2"\t"$3"\t"$4"\t""0""\t""0""\t"$5"\t"$6"\t"$7"\t"$8"\t"$fileName)}' $file
done
你能提供一些建议吗?
答案 0 :(得分:0)
很确定你只是想引用shell变量$ filename。一种选择是更改报价样式(以单引号开头,以双引号结束)并使用:
awk '{print $2, $3, $4, "0", "0", $5, $6, $7, $8, "'"$fileName\" }" OFS=\\t $file
你需要在$ fileName周围加上双引号,以便shell将其插入为变量。你可以在整个事情上使用双引号,也可以写awk "{print \$2, ...
。有很多方法可以进行必要的引用,但是将shell变量作为awk变量传递更具可读性:
awk '{print $2, $3, $4, "0", "0", $5, $6, $7, $8, f }' OFS=\\t f="$fileName" $file