在BASH中获取行的第n列的最短方法
这项工作:在BASH中获取行的第n列的最短方法,bash,awk,cut,Bash,Awk,Cut,这项工作: echo column1 column2 | awk'{print$2}' 这短了一个字符: 回声柱1柱2 |切割-d“-f 1 有没有更简单的方法 kent$ echo column1 column2|grep -Eo '\S*$' column2 kent$ echo column1 column2|awk '$0=$2' column2 kent$ echo column1 column2|sed 's/.* //' column2 这假设echo…
echo column1 column2 | awk'{print$2}'
这短了一个字符:
回声柱1柱2 |切割-d“-f 1
有没有更简单的方法
kent$ echo column1 column2|grep -Eo '\S*$'
column2
kent$ echo column1 column2|awk '$0=$2'
column2
kent$ echo column1 column2|sed 's/.* //'
column2
这假设echo…部分已修复。您可以尝试以下操作:
awk '$0=$2'
假设您对shell使用
bash
,那么数组可以很好地实现这一点,并避免分叉外部进程:
$ x="one two three"
$ y=(${x}) # note - no quotes, so we split on spaces
$ echo ${y[1]}
two
$
echo column2
是最简单的方法,因为它不需要管道,并且使用echo之外的零字符。您可以定义自定义命令,例如/usr/bin中的shell脚本。如果使用1个字符的脚本名称,则命令长度为1个字符。然而,我不认为减少这个游戏的chars有什么意义。这个问题似乎离题了,因为它是关于代码高尔夫的。请改为尝试。这取决于OP是否希望在第2列中没有值时打印空行。这个答案并不正确。