文本文件(文件名:1.txt):
Incoming_Queries_A: 13201096
Incoming_Queries_A6: 946
Incoming_Queries_AAAA: 1288191
Incoming_Queries_ANY: 31280
Incoming_Queries_AXFR: 5
Incoming_Queries_CNAME: 410
Incoming_Queries_DS: 20
Incoming_Queries_MX: 854
Incoming_Queries_NS: 97217
Incoming_Queries_PTR: 1011409
Incoming_Queries_SOA: 5006
Incoming_Queries_SPF: 1
Incoming_Queries_SRV: 3555
Incoming_Queries_TXT: 511
Incoming_Requests_IQUERY: 11
Incoming_Requests_NOTIFY: 1
Incoming_Requests_QUERY: 15640501
Incoming_Requests_STATUS: 1
Incoming_Requests_UPDATE: 5
我想删除文本行中tab(包含标签)之前的所有字符串,并将输出(例如:13201096)打印到标准输出。
示例:
# egrep -i "Incoming_Queries_A:" ./1.txt | sed 's/.Incoming_Queries_A:\t//'
输出:
Incoming_Queries_A: 13201096
但我只想输出 13201096
如何解决?感谢
答案 0 :(得分:2)
由于您只需要第二列,因此可以使用cut:
cut -f2 file.txt
答案 1 :(得分:2)
sed
不会在bash上自动处理转义的字符(例如\t
和\n
)。您可以通过两种不同的方式处理它:
您可以使用表达式中的实际标签替换\t
。要点击终端中的标签,请执行Control-V
,然后点击TAB键: Ctrl - V ,然后按 Tab 。
(这个看起来更优雅,IMO)您可以强制sed解释您的\t
,方法是在替换字符串前加$
。这样,您的命令就像:
egrep -i "Incoming_Queries_A:" ./1.txt | sed $'s/Incoming_Queries_A:\t//'
(我在.
之前删除了Incoming_Queries_A:
- 可能是一个错字/绝望的暂定词
希望有所帮助。
答案 2 :(得分:0)
使用awk
你可以这样做:
awk '{print $2}' 1.txt
13201096
946
1288191
31280
5
410
20
854
97217
1011409
5006
1
3555
511
11
1
15640501
1
5
或awk '/Incoming_Queries_A:/ {print $2}' /tmp/t.txt
仅获取您想要的行
答案 3 :(得分:0)
你可以尝试下面的GNU sed命令,
sed -r 's/^.*\t//' file