我喜欢
19599 user 20 0 120m 32m 4260 S 14.0 5.3 3:21.13 app.out \t Wed Jun 8 09:31:06 UTC 2011
19599 user 20 0 120m 32m 4260 S 14.0 5.4 3:21.61 app.out \t Wed Jun 8 09:31:12 UTC 2011
19599 user 20 0 121m 32m 4260 S 12.0 5.4 3:22.31 app.out \t Wed Jun 8 09:31:17 UTC 2011
我想删除该行中\t
开头的所有字符。
我怎么能用sed
?
我试过awk -F t '{print $1}'
但它从app.out中删除了t。
我想要o / p喜欢
19599 user 20 0 120m 32m 4260 S 14.0 5.3 3:21.13 app.out
19599 user 20 0 120m 32m 4260 S 14.0 5.4 3:21.61 app.out
19599 user 20 0 121m 32m 4260 S 12.0 5.4 3:22.31 app.out
如果我像这样写awk
:
awk -F t '{print $1"t"}'
它工作正常,但它只是一个解决方法。如何删除从行中\t
开始直到行尾的所有字符?
答案 0 :(得分:3)
听起来你想要以制表符分隔的文本中的第一个字段。您可以尝试以下方法之一:
cut -d $'\t' -f 1
awk -F '\t' '{print $1}'
sed $'s/\t.*//'
在bash中使用$''
语法(我相信ksh和zsh)更容易在字符串中嵌入转义序列。
答案 1 :(得分:3)
如果输出包含两个字符反斜杠和't',则使用:
sed 's/ *\\t.*//'
这将删除导致两个字符的空格,反斜杠和't',以及它们之后的所有内容。
如果输出包含制表符,则需要将“\\t
”替换为实际的制表符。
答案 2 :(得分:1)
awk 'BEGIN { FS = "\t" } 1 == 1 {print $1}' file.name
答案 3 :(得分:0)
直接通过:
sed 's/\(.*\)\t.*/\1/'