我有一个下面提供的文件,Col1/Field 1 总是有重复的数据,其余字段可能/可能没有,但我不担心其他列,我所需要的是是否有重复的数据需要打印col1 的空白空间和字段 1 的值将进行排序,以便没有值在行中重复出现。
COL1 | COL2 | COL3
----------------------
A1 | 98 | P
A1 | 98 | P
A1 | 98 | P
B1 | 98 | P
B1 | 98 | P
B1 | 98 | P
C1 | 98 | P
C1 | 98 | P
C1 | 98 | P
需要转换并且 awk/sed 只需要应用于 col1 (使用 awk/sed/cut 后的输出应如下所示)
COL1 | COL2 | COL3
----------------------
A1 | 98 | P
| 98 | P
| 98 | P
B1 | 98 | P
| 98 | P
| 98 | P
C1 | 98 | P
| 98 | P
| 98 | P
awk '!x[$1]++' file <-- 正在删除整行
awk/sed/cut 任何东西都可以。写了50行代码,最后阶段敲定
答案1
$ awk -F '|' 'BEGIN { OFS=FS } { c1 = $1 } c1 == prev { gsub(".", " ", $1) } { prev = c1; print }' file
COL1 | COL2 | COL3
----------------------
A1 | 98 | P
| 98 | P
| 98 | P
B1 | 98 | P
| 98 | P
| 98 | P
C1 | 98 | P
| 98 | P
| 98 | P
该awk
程序读取|
- 分隔的输入数据并写入|
- 分隔的输出数据。
对于输入中的每一行,它将第一列提取到 中c1
,并将其与之前的第一列进行比较prev
。如果它们相同,则第一列的值将被空格覆盖(这就是它的作用gsub()
,它可以防止列宽更改)。然后用 的值更新记录的“前一列”c1
并打印(可能已修改的)行。