linux指令:对第3至第6行内容进行重复行统计并删除重复行,同时删除每行的!字符
时间: 2024-03-24 11:39:33 浏览: 14
可以使用以下的命令实现:
```
sed '3,6!d' filename | sort | uniq -c | sed -e 's/^[ \t]*//' -e 's/ /\t/' -e 's/^ *//' -e 's/!\{1,\}//g'
```
其中:
- `sed '3,6!d' filename` 表示只保留文件 filename 中的第 3 至第 6 行内容。
- `sort` 将这些行进行排序。
- `uniq -c` 统计每行出现的次数,并且输出每行出现的次数和内容。
- `sed -e 's/^[ \t]*//' -e 's/ /\t/' -e 's/^ *//' -e 's/!\{1,\}//g'` 对输出结果进行处理,将每行前面的空格删除,将每行出现次数和内容之间的空格替换成制表符,将每行开头的空格删除,将每行中的感叹号删除。
相关问题
linux指令:对第 3 至第 6 行内容进行重复行统计并删除重复行,同时删除每行的!字符:
可以使用以下的命令实现:
```
sed '3,6!d' filename | sort | uniq -c | sed -e 's/^[ \t]*//' -e 's/ /\t/' -e 's/^ *//' -e 's/!\{1,\}//g'
```
其中:
- `sed '3,6!d' filename` 表示只保留文件 filename 中的第 3 至第 6 行内容。
- `sort` 将这些行进行排序。
- `uniq -c` 统计每行出现的次数,并且输出每行出现的次数和内容。
- `sed -e 's/^[ \t]*//' -e 's/ /\t/' -e 's/^ *//' -e 's/!\{1,\}//g'` 对输出结果进行处理,将每行前面的空格删除,将每行出现次数和内容之间的空格替换成制表符,将每行开头的空格删除,将每行中的感叹号删除。
现有 1.txt 文件,请使用 Linux 命令完成以下操作,1. 将所有的!都替换成 # ,并在屏幕上输出 2. 对第 2 到第 5 行按照 10.168.192.xxx 的这几列进行排序,并在屏幕上输出 3. 对第 3 至第 6 行内容进行重复行统计并删除重复行,同时删除每行的!字符
好的,您的要求已经收到,以下是对应的命令操作:
1. 将所有的!都替换成 # ,并在屏幕上输出:
```
sed 's/!/#/g' 1.txt
```
2. 对第 2 到第 5 行按照 10.168.192.xxx 的这几列进行排序,并在屏幕上输出:
```
sed -n '2,5p' 1.txt | sort -t . -k 1,3
```
3. 对第 3 至第 6 行内容进行重复行统计并删除重复行,同时删除每行的!字符:
```
sed '3,6s/!//g' 1.txt | sort | uniq -c | awk '{if($1==1){print $2}}'
```
注意:以上命令中涉及到的 sed、sort、uniq 和 awk 都是 Linux 命令行中的常用工具,具体用法可以通过 man 命令来查看。