gpt4 book ai didi

bash - 在 bash 中显示空列(固定宽度和空格分隔)的列

转载 作者:行者123 更新时间:2023-11-29 09:37:35 27 4
gpt4 key购买 nike

我有包含以下文本的日志文件(txt 格式)

UNIT       PHYS STATE LOCATION              INFO
TCSM-1098 SE-NH -
ETPE-5-0 1403 SE-OU BCSU-1 ACTV FLTY
ETIP-6 1402 SE-NH -

它们由空格分隔...我如何获得如下输出?

UNIT|PHYS|STATE|LOCATION|INFO
TCSM-1098||SE-NH||-
ETPE-5-0|1403|SE-OU|BCSU-1|ACTV FLTY
ETIP-6|1402|SE-NH||-

提前致谢

这是我目前尝试过的

cat file.txt | awk 'BEGIN { FS = "[[:space:]][[:space:]]+" } {print $1,$2,$3,$4}' | sed 's/ /|/g'

它产生这样的输出

|UNIT|PHYS|STATE|LOCATION|INFO|
|TCSM-1098|SE-NH|-|
|ETPE-5-0|1403|SE-OU|BCSU-1|ACTV|FLTY
|ETIP-6|1402|SE-NH|-|

该专栏与我希望的不太一样

最佳答案

好像不是定界而是定宽格式。

$ perl -ple '
$_ = join "|",
map {s/^\s+|\s+$//g;$_}
unpack ("a11 a5 a6 a22 a30",$_);
' <file.txt

它是如何工作的

  • -p 开关:循环输入行(默认变量:$_)并打印
  • -l switch : chomp line ending (\n) 并将其添加到输出
  • -e : 内联命令

  • 解包函数:采用定义的格式和输入行并返回一个数组

  • map 函数:将 block 应用于数组的每个元素:正则表达式以删除标题尾随空格
  • join 函数:获取定界符和数组并给出字符串
  • $_ = : 将字符串影响到输出的默认变量

关于bash - 在 bash 中显示空列(固定宽度和空格分隔)的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43734981/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com