Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编辑uniq-c(Bash)的输出_Bash - Fatal编程技术网

编辑uniq-c(Bash)的输出

编辑uniq-c(Bash)的输出,bash,Bash,我有一个用sort-f排序的单词列表。现在,我想使用uniq-c来获得一个没有重复单词但左侧有一个计数器的列表。我还希望带有数字的列与带有单词的列之间用制表符隔开 sort -f | uniq -c | sed $'s/\t */\t/g' 这是我的清单: Monday day Tuesday day Easter holiday Monday day christmas holiday Tuesday day Friday

我有一个用
sort-f
排序的单词列表。现在,我想使用
uniq-c
来获得一个没有重复单词但左侧有一个计数器的列表。我还希望带有数字的列与带有单词的列之间用制表符隔开

sort -f | uniq -c | sed $'s/\t */\t/g'
这是我的清单:

Monday       day
Tuesday      day
Easter       holiday
Monday       day
christmas    holiday
Tuesday      day
Friday       day
Thursday     day
thanksgiving holiday
这是我想要的输出:

1    christmas    holiday
1    Easter       holiday
1    Friday       day
2    Monday       day
1    thanksgiving holiday
1    Thursday     day
2    Tuesday      day
我试着使用下面的命令,虽然我在数字前得到了一个制表符,而不是在数字和单词之间

sort -f | uniq -c | sed $'s/\t */\t/g'

为了获得所需的输出,我必须修改什么?

您需要在捕获组中获取数字,并将其复制到替换组,以便将选项卡放在后面

sort -f days.txt | uniq -c | sed $'s/^ *\([0-9]*\) */\\1\t/'

uniq-c
不会将tab放在计数之前,它只会放空格。

@lowerer
$“…”
将shell进程转义序列放在字符串中,以便将
\t
转换为tab。@Barmar啊,好的,谢谢。它似乎可以翻译
\t
对我来说很好,没有
$