在Linux中使用列命令的不同方法
您是否曾经发现自己需要处理CSV文件并以结构化表格式生成输出?不久前,我正在处理一个凌乱的文件,该文件未正确格式化。它在每列之间都有过多的空间,我需要将其转换为数据库上传的CSV格式。清理并生成CSV输出后,我发现很难在视觉上验证数据的完整性,因为格式不太清楚。那是列命令对我非常有用的时候。
根据Manpage,列命令用于“列列表”。简单地说,这是一个轻巧的实用程序,它允许您将数据格式化为结构化的表格格式(将其组合为行和列),基于源文件的布置方式。列命令是Util-Linux软件包的一部分。
要记住的一个重要的事情是,列命令对基于Debian和基于RHEL的分布的行为有所不同。这是因为基于Debian的系统使用BSDMainutils软件包中的列实用程序,而不是来自Util-Linux的列实用程序。与BSDMainutils中的版本相比, Util-Linux中的版本更加最新。您可以在错误报告中阅读有关此信息的更多信息。
<code>$ dpkg -S $(which column)</code>
为此,我正在使用CentOS 7 ,我将向您展示Ubuntu和Centos 7之间的差异。要检查列命令的版本(以及Util-Linux的版本),请运行以下命令。请注意,这对Debian或Ubuntu Systems不起作用。
<code>$ column --version # does not work on Debian/ubuntu</code>
另外,您可以使用以下命令检查Util-Linux版本:
<code>$ rpm -qa | grep -i util-linux # for Redhat, Centos, Fedora, Amazon Linux $ dpkg -l | grep -i util-linux # for Ubuntu</code>
潜入列命令之前,最好检查MAN页面以探索所有可用的选项。
<code>$ man column</code>
以表格式显示文件内容
您可以使用列命令将文件转换为表格,将文件名与-t
选项一起传递作为参数。例如,我将使用/etc /passWD文件作为输入。
<code>$ column -t /etc/passwd</code>
查看上面的图像,输出可能不是您预期的 - 可能看起来很奇怪。这是因为列将空格用作默认的分界符。可以通过指定自定义定界符来更改此行为。
使用自定义定界符
自定义定系数提供了更大的灵活性。使用-s
选项,然后使用所需的定界符。让我们使用":"
作为定界符,以正确格式化/etc /passwd文件。
<code>$ column -s ":" -t /etc/passwd</code>
如您所见,现在的输出格式整洁。从Util -Linux版本2.23开始, -s
选项不再将多个相邻定界符视为一个。
但是,如果您在Ubuntu上运行相同的命令,您会注意到它确实将多个定界符视为一个。这是由于BSDMainutils中包含的列版本所致。
<code>$ column -s ":" -t /etc/passwd</code>
要在Debian或Ubuntu上修复此行为,请使用-n
标志。
<code>$ column -t -s ":" -n /etc/passwd # Only on Debian/Ubuntu</code>
跳过或包括空线
默认情况下,列命令忽略输入文件中的空白行。假设您的输入文件为CSV格式,并在条目之间包含空白行。当您使用列格式化时,将跳过这些空白行。
<code>$ column -t -s ";" dummy.txt</code>
如上图所示,在生成表时忽略了虚线。
注意:在列命令的BSDMainutil和Util-Linux版本中,此行为是一致的。但是,在Debian或Ubuntu上,您可以使用-e
标志来覆盖它。
<code>$ column -e -t -s "," dummy.txt # Only on Debian/Ubuntu</code>
现在,该表已正确生成,并保留了空线。
自定义输出分离器
默认情况下,将两个空间用作列之间的分离器。您可以使用-o
选项更改此操作。但是,此功能仅在列的Util-Linux版本中可用(基于RHEL的系统中)。
<code>$ column -t -s "," -o "||" dummy.txt # Only on Rhel based distro</code>
将行转向列
使用-x
选项,您可以将行转移到列中。此功能在列命令的RHEL和UBUNTU变体中都以相同的方式工作。当您需要提取某些字段并将其制成CSV文件中的标题时,这可能特别有用。
<code>$ column -x fillcols.txt</code>
另外,如果您在没有任何标志的情况下运行列命令,则其行为与使用-x
标志的情况相同。
确定终端柱宽度
列命令使用($COLUMNS)
环境变量来确定终端的宽度。基于此,它调整了表格的显示方式。
<code>$ echo $COLUMNS</code>
在下面的示例中,我调整了终端窗口的大小,以便将$COLUMNS
设置为60 ,然后运行列命令。然后,我再次调整了窗口,以使$COLUMNS
设置为114 ,然后再次运行相同的命令。您可以清楚地看到根据终端尺寸显示表的区别。
<code>$ column -t -s ":" /etc/passwd | head 5</code>
结束了本指南。如果您有任何建议或反馈,请随时在下面发表评论。
以上是在Linux中使用列命令的不同方法的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undress AI Tool
免费脱衣服图片

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

LinuxCanrunonModestHardwarewtareWithSpecificminimumRequirentess.A1GHZPROCESER(X86ORX86_64)iSNEDED,withAdual-Corecpurecommondend.r AmshouldBeatLeast512MbForCommand-lineUseor2Gbfordesktopenvironments.diskSpacePacereQuiresaminimumof5-10GB,不过25GBISBISBETTERFORAD

确认目标硬盘设备名(如/dev/sda),避免误删系统盘;2.使用sudoddif=/dev/zeroof=/dev/sdXbs=1Mstatus=progress全盘覆写零值,适用于大多数场景;3.敏感数据使用sudoshred-v-n3/dev/sdX进行三次随机数据覆写,确保无法恢复;4.可选执行sudobadblocks-wsv/dev/sdX做破坏性写入测试;最后用sudohexdump-C/dev/sdX|head验证是否全为零,完成安全擦除。

在Linux中添加用户常用useradd或adduser命令。1.使用useradd时需手动设置密码和家目录,加-m参数可创建家目录;2.可通过-s、-G、-u等参数指定shell、组和UID;3.adduser是交互式命令,适合新手自动完成配置;4.注意权限、用户名唯一性和家目录权限问题;5.误操作可用userdel删除用户及家目录。掌握这些要点可高效安全地管理用户。

想知道Linux系统信息和版本,可通过以下步骤操作:1.使用lsb_release-a查看发行版信息;2.查看/etc/os-release文件获取版本详情;3.用uname-r或uname-mrs确认内核版本及系统架构;4.运行lscpu、free-h或dmidecode(需root权限)获取硬件信息。上述方法适用于不同发行版,部分命令可能需安装或权限调整。

要修改Linux系统的hosts文件需用管理员权限编辑。1.hosts文件位于/etc/目录下,可用cat/etc/hosts查看内容;2.使用sudo配合nano/vim/gedit等编辑器进行修改,格式为IP地址加主机名;3.修改后可能需要清除DNS缓存或重启NetworkManager服务生效;4.注意格式正确、避免频繁修改、注释不确定的条目即可安全操作。

cronisusedforpreciseschedulingonalways-onsystems,whileanacronensuresperiodictasksrunonsystemsthataren'tcontinuouslypowered,suchaslaptops;1.Usecronforexacttiming(e.g.,3AMdaily)viacrontab-ewithsyntaxMINHOURDOMMONDOWCOMMAND;2.Useanacronfordaily,weekly,o

AfterinstallingLinux,thefirststepsincludeupdatingyoursystem,installingessentialsoftware,settingupbackupandsecuritymeasures,andcustomizingtheinterfacetosuityourpreferences.1)Updateyoursystemusingtheappropriatecommandforyourdistro(e.g.,sudoaptupdate&am

在Linux上安装软件主要有三种方法:1.使用包管理器,如apt、dnf或pacman,通过更新源后执行install命令安装,例如sudoaptinstallcurl;2.对于.deb或.rpm文件,分别使用dpkg或rpm命令安装,并在需要时修复依赖;3.使用snap或flatpak跨平台安装应用,如sudosnapinstall软件名,适用于追求版本更新的用户,推荐优先使用系统自带包管理器以获得更好的兼容性和性能。
