Sed删除后一行中的所有内容\t

Sed删除后一行中的所有内容\t,sed,awk,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

我有类似的订单

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

我想要像这样的付款方式

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

只需通过管道即可:

sed 's/\(.*\)\t.*/\1/'

听起来您希望在制表符分隔的文本中找到第一个字段。您可以尝试以下方法之一:

cut -d $'\t' -f 1
awk -F '\t' '{print $1}'
sed $'s/\t.*//'

bash(我相信还有ksh和zsh)中使用了
$''
语法,以便更容易地在字符串中嵌入转义序列。

如果输出包含两个字符反斜杠和“t”,则使用:

sed 's/ *\\t.*//'
这将删除两个字符前的空格,即反斜杠和“t”,以及它们后面的所有内容


如果输出包含制表符,则需要将“
\\t
”替换为实际的制表符。

行中要保留什么?我的意思是显示一个示例(在这里不容易找到)@Good.Dima更新了我的问题。
\t
实际上是制表符还是序列反斜杠和“t”?我得到\t周三6月8日09:30:55 UTC 2011 19599用户20 0 121m 32m 4260 S 8.0 5.4 3:20.54 app.out\t星期三2011年6月8日09:31:01 UTC 19599用户20 0 120m 32m 4260 S 14.0 5.3 3:21.13 app.out\t星期三2011年6月8日09:31:06 UTC 2011对不起。它不起作用我将获得\t星期三2011年6月8日09:30:55 UTC 19599用户20 0 121m 32m 4260 S 8.0 5.4 3:20.54 app.out\t星期三2011年6月8日09:31:01 UTC
sed 's/ *\\t.*//'