【发布时间】:2012-10-05 04:31:52
【问题描述】:
我正在尝试一次将一个 awk 变量字段设置为多个字段。
现在只能一一设置变量。
for line in `cat file.txt`;do
var1=`echo $line | awk -F, '{print $1}'`
var2=`echo $line | awk -F, '{print $2}'`
var3=`echo $line | awk -F, '{print $3}'`
#Some complex code....
done
我认为这是昂贵的,因为它会多次解析 linux 变量。是否有一种特殊的语法可以一次设置变量?我知道 awk 有一个 BEGIN 和 END 块,但我试图避免 BEGIN 和 END 块的原因是为了避免嵌套的 awk。
我打算在 #Some complex code.... 部分中放置另一个循环和 awk 代码。
for line in `cat file.txt`;do
var1=`echo $line | awk -F, '{print $1}'`
var2=`echo $line | awk -F, '{print $2}'`
var3=`echo $line | awk -F, '{print $3}'`
for line2 in `cat file_old.txt`;do
vara=`echo $line2 | awk -F, '{print $1}'`
varb=`echo $line2 | awk -F, '{print $2}'`
# Do comparison of $var1,var2 and $vara,$varb , then do something with either
done
done
【问题讨论】:
-
为什么不使用
awk进行比较和“做某事”? -
你能给出一个使用两个文件与 awk 相比的示例代码吗?请注意,两个文件 file.txt 和 file_old.txt 可以有不同的行大小。
-
抱歉,我错过了您想将它们相互比较的信息。取决于您要解决的具体问题和文件的结构,但我的强烈印象是我们有更好的解决方案。
-
是的,这听起来绝对像XY problem。