我有这个输入,它显示在列中。我想获取此示例的最后一列:
[ 3] 1.0- 2.0 sec 1.00 MBytes 8.39 Mbits/sec
[ 3] 2.0- 3.0 sec 768 KBytes 6.29 Mbits/sec
[ 3] 3.0- 4.0 sec 512 KBytes 4.19 Mbits/sec
[ 3] 4.0- 5.0 sec 256 KBytes 2.10 Mbits/sec
...
Run Code Online (Sandbox Code Playgroud)
如果我使用
cut -d\ -f 13
Run Code Online (Sandbox Code Playgroud)
我得到
Mbits/sec
6.29
4.19
2.10
Run Code Online (Sandbox Code Playgroud)
因为有时中间会有额外的空格。
例如,我有一个文件(用 生成echo -e "var1\tvar2\t\var3\tvar4" > foo)输出为:
$ cat foo
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 0.88
Run Code Online (Sandbox Code Playgroud)
我更喜欢这样的输出(这里我使用vim和:set tabstop=14):
case elems meshing nlsys
uniform 2350 0.076662 2.78
non-conformal 348 0.013332 0.55
scale 318 0.013333 0.44
smarter 504 0.016666 0.64
submodel 360 .009999 0.40
unstruct-quad 640 0.019999 0.80
unstruct-tri 1484 0.01 …Run Code Online (Sandbox Code Playgroud) 我想使用 Unixcolumn命令来格式化一些文本。我有由制表符分隔的字段,但在每个字段中也有空格。column分隔空白(制表符和空格)。如何使列仅使用制表符作为分隔符?
我试图使用以下命令将制表符指定为分隔符:
cat myfile | column -t -s"\t"
Run Code Online (Sandbox Code Playgroud) 我的脚本:
date
echo -e "${YELLOW}Network check${NC}\n\n"
while read hostname
do
ping -c 1 "$hostname" > /dev/null 2>&1 &&
echo -e "Network $hostname : ${GREEN}Online${NC}" ||
echo -e "${GRAY}Network $hostname${NC} : ${RED}Offline${NC}"
done < list.txt
sleep 30
clear
done
Run Code Online (Sandbox Code Playgroud)
正在输出这样的信息:
Network 10.x.xx.xxx : Online
Network 10.x.xx.xxx : Offline
Network 10.x.xx.xxx : Offline
Network 10.x.xx.xxx : Offline
Network 10.x.xx.x : Online
Network 139.xxx.x.x : Online
Network 208.xx.xxx.xxx : Online
Network 193.xxx.xxx.x : Online
Run Code Online (Sandbox Code Playgroud)
我想清理它以获得这样的东西:
Network 10.x.xx.xxx : Online
Network 10.x.xx.xxx : Offline …Run Code Online (Sandbox Code Playgroud) MYPATH=/var/www/html/error_logs/
TOTALFILE=$(ls $MYPATH* | wc -l)
FILETIME=$(stat --format=%y $MYPATH* | head -5 | cut -d'.' -f1)
FILE=$(ls -1tcr $MYPATH* | head -5 | rev | cut -d/ -f1 | rev)
TOPLINE=$(head -1 $MYPATH* | grep -Po '".*?"' | head -5)
Run Code Online (Sandbox Code Playgroud)
我如何优雅地将这 5 个文件信息打印到带有标题的列中?
FILE CREATED TIME | FILE NAME | ERROR HEADER
---------------------------------------------
$FILETIME | $FILE | $TOPLINE
2012-11-29 11:27:45 | 684939947465 | "SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)"
Run Code Online (Sandbox Code Playgroud)
等等 5个文件
total files: $TOTALFILE …
是否有一个简单的实用程序或脚本可以将我的一个脚本的输出分列?我有某种形式的数据:
A aldkhasdfljhaf
B klajsdfhalsdfh
C salkjsdjkladdag
D lseuiorlhisnflkc
E sdjklfhnslkdfhn
F kjhnakjshddnaskjdh
Run Code Online (Sandbox Code Playgroud)
但如果这变成两个长,请按以下形式写入数据(仍然垂直排序):
A aldkhasdfljhaf D lseuiorlhisnflkc
B klajsdfhalsdfh E sdjklfhnslkdfhn
C salkjsdjkladdag F kjhnakjshddnaskjdh
Run Code Online (Sandbox Code Playgroud)
通过阅读联机帮助页,我认为这column不适合,但我不确定。很容易拆分成以下形式:
A B
C D
E F
Run Code Online (Sandbox Code Playgroud)
通过只打印\n每两行(我当前的脚本所做的)。有任何想法吗?谢谢!
我正在尝试对通常(并非总是)行所在的文件进行排序
whatever:[A-Ba-b0-9_]: values
Run Code Online (Sandbox Code Playgroud)
其中字段用:. 有些行不遵循这种模式,我对它们不感兴趣,它们可以在输出中的任何位置。
我只想对第二列(而不是值)上的行进行排序,但是当我这样做时sort -t: -k 2 myfile,它会在所有行上对文件进行排序。
如何使用-k以拥有我需要的东西?
我的文本文件没有分隔符来指定分隔符只是空格,我如何切出第 2 列以输出文件,
39 207 City and County of San Francisc REJECTED MAT = 0
78 412 Cases and materials on corporat REJECTED MAT = 0
82 431 The preparation of contracts an REJECTED MAT = 0
Run Code Online (Sandbox Code Playgroud)
所以我需要的输出是
207
412
432
Run Code Online (Sandbox Code Playgroud) 我们能否在 top 命令中获取特定列,例如,我只对内存利用率和 CPU 使用率列感兴趣。
如何将顶部命令的显示列减少到仅上述两列?
我有一个像下面这样的行的文件。
title1:A1
title2:A2
title3:A3
title4:A4
title5:A5
title1:B1
title2:B2
title3:B3
title4:B4
title5:B5
title1:C1
title2:C2
title3:C3
title4:C4
title5:C5
title1:D1
title2:D2
title3:D3
title4:D4
title5:D5Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
title1 title2 title3 title4
A1 A2 A3 A4
B1 B2 B3 B4
C1 C2 C3 C4
D1 D2 D3 D4Run Code Online (Sandbox Code Playgroud)