文件包含编译器生成的警告
warnings.txt(带8行)
Line1 "/Project/user/XYZ/gsoap/gsoap-2.8.9/gsoap/stdsoap2.cpp", line 1657: error #4296-D: arithmetic operation on boolean type
Line2{ return soap->count - soap->buflen + soap->bufidx - (soap->ahead != 0);
Line3
Line4
Line5 "/Project/user/XYZ/gsoap/gsoap-2.8.9/gsoap/stdsoap2.cpp", line 4136: warning #3348-D: declaration hides variable "err" (declared at line 3
Line6 700)
Line7 { int err = SSL_get_error(soap->ssl, r);
Line8 ^
我想使用awk逐行阅读此文件,就像循环需要大量时间来处理
我尝试的两种方法:
for line in `awk '{print $0}' warnings.txt`
do
echo $line
done
和,
for line in `awk '{BEGIN{ORS="n";}{print $0}' warnings.txt`
do
echo $line
done
预期输出:
与上面相同(即文件划线的内容)
Line1 "/Project/user/XYZ/gsoap/gsoap-2.8.9/gsoap/stdsoap2.cpp", line 1657: error #4296-D: arithmetic operation on boolean type
Line2{ return soap->count - soap->buflen + soap->bufidx - (soap->ahead != 0);
Line3
Line4
Line5 "/Project/user/XYZ/gsoap/gsoap-2.8.9/gsoap/stdsoap2.cpp", line 4136: warning #3348-D: declaration hides variable "err" (declared at line 3
Line6 700)
Line7 { int err = SSL_get_error(soap->ssl, r);
Line8 ^
我的输出:
"/Project/user/XYZ/gsoap/gsoap-2.8.9/gsoap/stdsoap2.cpp",
line
1657:
error
#4296-D:
arithmetic
operation
on
boolean
type
{
return
soap->count
-
soap->buflen
+
soap->bufidx
-
(soap->ahead
!=
0);
"/Project/user/XYZ/gsoap/gsoap-2.8.9/gsoap/stdsoap2.cpp",
line
4136:
warning
#3348-D:
declaration
hides
variable
"err"
(declared
at
line
3
700)
{
int
err
=
SSL_get_error(soap->ssl,
r);
^
谢谢
使用read
内置
while read -r line; do
echo "$line"
done < warning.txt
这是您使用awk读取warnings.txt并根据您发布的问题来读取文件的方式:
$ awk '1' warnings.txt
Line1 "/Project/user/XYZ/gsoap/gsoap-2.8.9/gsoap/stdsoap2.cpp", line 1657: error #4296-D: arithmetic operation on boolean type
Line2{ return soap->count - soap->buflen + soap->bufidx - (soap->ahead != 0);
Line3
Line4
Line5 "/Project/user/XYZ/gsoap/gsoap-2.8.9/gsoap/stdsoap2.cpp", line 4136: warning #3348-D: declaration hides variable "err" (declared at line 3
Line6 700)
Line7 { int err = SSL_get_error(soap->ssl, r);
Line8 ^
显然,您可以使用cat
而不是尴尬来做到这一点。如果您有其他任何内容,请使用该文件的内容,请告诉我们(通过使用预期输出和解释更新您的问题),以便我们可以为您提供帮助。
您可以做到:
代码:
ifsold="$IFS"
IFS="
"
for line in `cat warnings.txt` ; do
echo "line: $line"
done
IFS="$ifsold"