如何在bash的第二列中删除没有内容的行?
这是curl-s ifconfig.me/all | column-t的示例输出: 我喜欢以这样一种方式解析它,即user_agent字段不获取制表符,并删除所有字段而不产生任何结果如何在bash的第二列中删除没有内容的行?,bash,curl,Bash,Curl,这是curl-s ifconfig.me/all | column-t的示例输出: 我喜欢以这样一种方式解析它,即user_agent字段不获取制表符,并删除所有字段而不产生任何结果 ip_addr: 193.136.19.55 remote_host: gwec.di.uminho.pt user_agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1
ip_addr: 193.136.19.55
remote_host: gwec.di.uminho.pt
user_agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
port: 37429
mime: */*
使用awk,您可以使用awk“$2”,这将检查第二个字段是否存在。如果它确实存在,将打印该行
就你而言
curl -s ifconfig.me/all | column -t | awk '$2'
实例
我喜欢以这样一种方式来解析它,即user\u agent字段不会
获取选项卡,并删除所有没有结果的字段
ip_addr: 193.136.19.55
remote_host: gwec.di.uminho.pt
user_agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
port: 37429
mime: */*
使用输入字段分隔符FS=tab和输出字段分隔符OFS=space,如下所示:
$ awk 'BEGIN{FS="\t";OFS=" "} $2 {printf "%s\t",$1; for (i=2; i<=NF; i++) printf $i ; printf "\n"}' your_result
ip_addr: 193.136.19.55
remote_host: gwec.di.uminho.pt
user_agent: curl/7.22.0(x86_64-pc-linux-gnu)libcurl/7.22.0OpenSSL/1.0.1zlib/1.2.3.4libidn/1.23librtmp/2.3
port: 37429
mime: */*
使用awk,您可以使用awk“$2”,这将检查第二个字段是否存在。如果它确实存在,将打印该行
就你而言
curl -s ifconfig.me/all | column -t | awk '$2'
实例
我喜欢以这样一种方式来解析它,即user\u agent字段不会
获取选项卡,并删除所有没有结果的字段
ip_addr: 193.136.19.55
remote_host: gwec.di.uminho.pt
user_agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
port: 37429
mime: */*
使用输入字段分隔符FS=tab和输出字段分隔符OFS=space,如下所示:
$ awk 'BEGIN{FS="\t";OFS=" "} $2 {printf "%s\t",$1; for (i=2; i<=NF; i++) printf $i ; printf "\n"}' your_result
ip_addr: 193.136.19.55
remote_host: gwec.di.uminho.pt
user_agent: curl/7.22.0(x86_64-pc-linux-gnu)libcurl/7.22.0OpenSSL/1.0.1zlib/1.2.3.4libidn/1.23librtmp/2.3
port: 37429
mime: */*
带有示例输入的输出:
ip_addr: 193.136.19.55
remote_host: gwec.di.uminho.pt
user_agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
port: 37429
mime: */*
带有示例输入的输出:
ip_addr: 193.136.19.55
remote_host: gwec.di.uminho.pt
user_agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
port: 37429
mime: */*
谢谢您知道用户代理字段的解决方案吗?最好使用printf进行对齐输出。此外,使用$2到$8是有限的,如果其他字段超过8,则可能不包括这些字段。请看我的帖子,其中的概念似乎被复制了。@konsolebox相信我,我没有复制,我现在只是看到了你的答案。无论如何,我已经更新了我的答案,所以它与你的不同。我用for循环得到了同样的结果。谢谢!您知道用户代理字段的解决方案吗?最好使用printf进行对齐输出。此外,使用$2到$8是有限的,如果其他字段超过8,则可能不包括这些字段。请看我的帖子,其中的概念似乎被复制了。@konsolebox相信我,我没有复制,我现在只是看到了你的答案。无论如何,我已经更新了我的答案,所以它与你的不同。我用for循环得到了同样的结果。谢谢,它太完美了!你能解释一下输入吗?谢谢,它太完美了!你能解释一下输入吗?