关于awk -F的问题
执行ls>>bbawk'{if($5=="0")peint($0"这个文件为空")}'bb|teecc可以显示cc当awk-F'|''{if($5=="0")peint(...
执行ls >> bb
awk '{ if( $5=="0") peint ($0 " 这个文件为空" ) } ' bb |tee cc
可以显示cc
当awk -F '|' '{ if( $5=="0") peint ($0 " 这个文件为空" ) } ' bb |tee cc
时输出没有结果
这是为什么呢 展开
awk '{ if( $5=="0") peint ($0 " 这个文件为空" ) } ' bb |tee cc
可以显示cc
当awk -F '|' '{ if( $5=="0") peint ($0 " 这个文件为空" ) } ' bb |tee cc
时输出没有结果
这是为什么呢 展开
展开全部
-F表示FS 字段的分隔符,默认为空格。
如果你要改输出的字段分隔符用OFS (输出的字段分隔符,默认为空格),如
echo a b c d | awk '{OFS="|";print $1,$2,$3,$4}'
但是它对$0输出的结果是无效的。
所以两个方法:
1. awk '{OFS="|"; if( $5=="0") print $1,$2,$3,$4,$5,$6,$7,$8,$9,"这个文件为空"}' bb | tee cc
2. 由于ls-l的结果中不光有空格,还有tab(\t),所以用以下语句可以实现你的要求。
awk '{if( $5=="0") print $0}' bb | perl -pe '{s/[ \t]+/\|/g}' | tee cc
如果你要改输出的字段分隔符用OFS (输出的字段分隔符,默认为空格),如
echo a b c d | awk '{OFS="|";print $1,$2,$3,$4}'
但是它对$0输出的结果是无效的。
所以两个方法:
1. awk '{OFS="|"; if( $5=="0") print $1,$2,$3,$4,$5,$6,$7,$8,$9,"这个文件为空"}' bb | tee cc
2. 由于ls-l的结果中不光有空格,还有tab(\t),所以用以下语句可以实现你的要求。
awk '{if( $5=="0") print $0}' bb | perl -pe '{s/[ \t]+/\|/g}' | tee cc
追问
我看到有人说,添加$1=$1
awk '{OFS="|"; $1=$1 if( $5=="0") print &0,"这个文件为空"}'
这样awk会认为$0有了变动并对$0重新赋值。请问这样可以么?
上面我验证了 ,可以
还有一个问题上面的输出由于文件名长短不一,会导致最后的输出对不齐。能不能像c语言一样指定print的输出格式呢?
展开全部
你应该ls -l > bb 才对吧?
awk '{if($5=="0")print($0 " 这个文件为空")}' bb | tee cc #然后判断容量是否为空
-F'|' 是以| 为分割符 ls -l 显示里并没有| 这个符号吧?
awk '{if($5=="0")print($0 " 这个文件为空")}' bb | tee cc #然后判断容量是否为空
-F'|' 是以| 为分割符 ls -l 显示里并没有| 这个符号吧?
追问
对,是ls l >bb
我是想替换原来的域分割符为‘|’,应该怎样做呢
我使用awk ' BEGIN{OFS="|"} {if($5=="0")print($0 " 这个文件为空")}' bb | tee cc
直接报错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
awk '{gsub(FS, "|")
print
}' bb | tee cc
这样会把bb里的域分割符替换成|
不太懂你到底要干什么。
}' bb | tee cc
这样会把bb里的域分割符替换成|
不太懂你到底要干什么。
追问
正在学习中,做些无聊的实验,呵呵。可以通过修改OFS么?
追答
可以,那样的话,你要print $1,$2,$3这样才可以达到效果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询