Sed在\ t之后删除所有内容

时间:2011-06-08 13:54:47

标签: sed awk

我喜欢

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开始直到行尾的所有字符?

4 个答案:

答案 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/'