晚上好。
在处理awk的最后一个要与您分享的领域时,我遇到了一个奇怪的现象。
我有一个用于社交网络的日志文件,其中包含一些由|分隔的字段。
这些字段不是重要的恕我直言,但它们会以这种格式显示。
id |名称|姓氏| ... | Social_Media_Used(无)
有9个单独的字段。
每一行都包含一个用户。例如^ random_numbers | Aris | something | ... | Facebook $
目标是找到一种方法来为使用的每个社交媒体查找总计。我已经使用上面的代码完成了此操作。
grep -v '^#' $3 | awk -F\| '{print $9}' | sort | uniq -c | awk '{print $1$2}'
第一个命令从我的文件中删除了被视为注释的#号。
第二个命令查找并打印与字段对应的字段9 Social_Media_Used 。这是最后一个字段,因此我想它的末尾会有\ n。
此后,我对字段进行排序和计数,最后awk像这样输出输出:
884Blogger
1105Facebook
1326Flickr
1104Google+
1105Instagram
1105LinkedIn
1325Twitter
1546Youtube
如果我在最后一个命令中尝试过:
awk'{print $ 2 $ 1}'然后发生了奇怪的事情。
如果将其存储在文件中,则可以看到以下内容:
Blogger
884
Facebook
1105
Flickr
1326
Google+
1104
Instagram
1105
LinkedIn
1105
Twitter
1325
Youtube
1546
如果咆哮,我尝试从终端查看输出表格,我会看到以下内容:
884gger
1105book
1326kr
1104le+
1105agram
1105edIn
1325ter
1546ube
期望的输出是:
Blogger 884
脸书1105
Flickr 1326
Google+ 1104
Instagram的1105
领英1105
Twitter 1325
YouTube 1546
我搜索了有关sed或awk的RS,ORS或FRS的所有内容,并且还尝试使用printf或print,但是我找不到与之匹配或什至几乎在同一行中都没有word-space-number的内容。我如何打印或打印这些行。但是,当我尝试打印一个伪文件时,我从主行复制粘贴了20行,一切都进行得很顺利。此外,如果我尝试打印或打印8或7字段,一切都将顺利进行。 / p>
该问题的解决方案在哪里?在9500个文件的长文件中?还是在单词后存在换行符?您如何看待?
答案 0 :(得分:1)
您的数据最有可能包含\r\n
行尾。首次运行dos2unix file
您也可以消除大多数管道
$ awk -F\| '!/^#/{a[$9]++} END{for(k in a) print k,a[k]}' file | sort
答案 1 :(得分:1)
用GNU awk代替:
$('.content[data-id="Java"]')
使用
$('.content[data-id="Java"] > button').hide()
处理Unix和DOS / Windows行尾。