我有一个使用 sort -n 排序的文件。但是,为了在 gnuplot 中绘制曲面图,我需要在第一列的不同值的行之间有一个空行。例如
1.0
1.0
1.1
1.1
Run Code Online (Sandbox Code Playgroud)
到:
1.0
1.0
1.1
1.1
Run Code Online (Sandbox Code Playgroud)
有没有什么办法可以用 Ubuntu Linux 轻松做到这一点?
我会写:
awk 'NR > 1 && $0 != last {print ""}
{print; last = $0}' < your-file
Run Code Online (Sandbox Code Playgroud)
需要注意的是,只要线包括数字,那$0 != last将是一个数字比较,这1.0是相同的1或1e0或1.00(尽管不一定为0x1,也与关于小数点的处理提防的语言环境的潜在影响分隔符(1.0 对 1,0))。如果要确保进行词法比较,请将其更改为 $0 "" != last.
根据awk实现,这将强制执行memcmp()(字节到字节的比较)、strcmp()(相同,但不能处理 NUL 字节)、strcoll()(两个字符串是否排序相同)或wcsncmp()(字符到字符而不是字节到字节)比较(如果您的输入仅包含十进制数字和句点字符,则所有这些都应该是等效的)。
如果要强制进行字节到字节的比较,请将语言环境固定为 C:
LC_ALL=C awk 'NR > 1 && $0 "" != last {print ""}
{print; last = $0}' < your-file
Run Code Online (Sandbox Code Playgroud)
(同样,一些awk实现会阻塞在 NUL 字符上)。
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |