awk如何按分隔符打印后 输出也将分隔符打印出来
时间: 2023-12-19 13:07:34 浏览: 78
如果想要在awk按分隔符打印后同时输出分隔符,可以在打印时使用`OFS`和`ORS`变量,它们分别表示输出字段分隔符和输出记录分隔符。例如,以下命令将以冒号为分隔符,输出/etc/passwd文件中的第一列和第三列,并且在每个字段之间输出冒号,每行输出后添加一个换行符:
```
awk -F: '{print $1,":",$3}' OFS="" ORS="\n" /etc/passwd
```
输出结果类似于:
```
root:0
daemon:1
bin:2
sys:3
...
```
在这个命令中,`OFS=""`表示输出字段分隔符为空,`ORS="\n"`表示输出记录分隔符为换行符。在打印时,我们在每个字段之间输出冒号,这样输出就会包含原始的分隔符。
相关问题
使用,awk 按照分隔符分割字符串,并将分隔符去掉,输出分割的结果
在Unix/Linux命令行工具awk中,可以利用内置的split()函数按照指定的分隔符分割字符串,并通过for循环或其他操作去除分隔符。awk的基本语法是`awk '{action} pattern' input_file`,其中,`action`是你想要对每个匹配行执行的操作,`pattern`是选择哪些行进行处理的规则。
下面是一个例子,假设我们有一个名为"data.txt"的文件,内容如下:
```
name,age,city
Alice,25,New York
Bob,30,Los Angeles
Charlie,35,San Francisco
```
我们可以使用awk按逗号分割并去掉分隔符,保留每一列的内容:
```bash
awk -F ',' '{ for(i=1;i<=NF;i++) { print $i } } data.txt`
```
这里,`-F ','`指定了分隔符为逗号,`NF`代表字段的数量,`$i`则是第i个字段的值。运行上述命令后,你会看到如下的输出:
```
name
25
New York
Bob
30
Los Angeles
Charlie
35
San Francisco
```
awk print 分隔符
在awk中,print命令用于输出文本。要指定分隔符,可以使用awk的内置变量OFS(Output Field Separator)。默认情况下,OFS的值为一个空格。
要在print语句中指定分隔符,可以将要打印的字段用逗号(,)分隔,并在逗号后面指定新的分隔符。以下是一个示例:
```
awk 'BEGIN {OFS=","} {print $1, $2, $3}' file.txt
```
在上面的示例中,我将OFS设置为逗号,并使用print命令打印文件file.txt的第一、第二和第三个字段,字段之间用逗号分隔。
你也可以通过设置输出分隔符来改变默认的OFS值。在BEGIN块中使用赋值语句来设置OFS的值。例如,如果你想将分隔符设置为制表符,可以这样写:
```
awk 'BEGIN {OFS="\t"} {print $1, $2, $3}' file.txt
```
在上面的示例中,我将OFS设置为制表符,并使用print命令打印文件file.txt的第一、第二和第三个字段,字段之间用制表符分隔。
阅读全文