Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Unix uniq-c到csv格式_Unix - Fatal编程技术网

Unix uniq-c到csv格式

Unix uniq-c到csv格式,unix,Unix,我试图获得如下所示的uniq-c输出: 100 a 99 b 45 c etc... 要仅使用unix UTIL以csv格式写入文件,并颠倒顺序,请执行以下操作: a,100 b,99 c,45 etc... 我想我可以将输出导入tr”“,“以获得csv格式,但如何仅使用unix UTIL获得要反转的列的顺序呢?armnotstrong可能是最简单的,但您也可以使用sed cat test.txt | awk '{print $2,$1}' sed -r 's/(.+) (.+)/\2,\

我试图获得如下所示的uniq-c输出:

100 a
99 b
45 c
etc...
要仅使用unix UTIL以csv格式写入文件,并颠倒顺序,请执行以下操作:

a,100
b,99
c,45
etc...

我想我可以将输出导入
tr”“,“
以获得csv格式,但如何仅使用unix UTIL获得要反转的列的顺序呢?

armnotstrong可能是最简单的,但您也可以使用
sed

cat test.txt | awk '{print $2,$1}'
sed -r 's/(.+) (.+)/\2,\1/'

对于unix中的这些单行程序,我喜欢使用perl

uniq -c yourfile | perl -lne 's/^(\s*)(\d*)(\s*)(.*)/$4,$2/g; print $_'
不同之处在于输出中包含“,”的方式。如果按照@armnotstrong进行操作,结果将只是一组由空格分隔的线

bash
=>猫文本
100 a
99 b
98摄氏度
=>cat文本| awk'{print$2',“$1}”
a、 一百
b、 九十九
c、 98

这似乎在两个参数之间添加了一个
^M
字符:
a^M 100
您知道如何消除此问题吗?然后,检查原始数据,第一列后面必须有一个
^M
。它是一个控制字符,您可以使用“代码> SED S/^ M//G′/CODE”将其处理为正常字符串,请注意,在控制台或VIMHMM中,输入一个序列密钥输入Ctrl +V CTRL+M,这似乎是规范中所需的行终止符,因此这就是为什么AWK将其放在中间的原因。有没有什么方法可以把它放在最后,例如,
100^M
?quick Think
cat test.txt | sed's/^M//g'| awk'{print$2,$1“^M”}
^M
应该像上面提到的帖子一样输入。