【问题标题】:bash script read line by line then print one linebash脚本逐行读取然后打印一行
【发布时间】:2013-12-08 07:18:50
【问题描述】:

我有一个超过 10000 行的文本文件,并使用此代码来分隔一些内容:

BS=`cat myfile | grep myword`  
cutbs=`cut -d'=' -f2 $BS | sort -u
$cat cutbs  
qwe  
asd  
zxc

现在我想在一行中打印这种类型的输出,如下所示:

$cat cutbs  
qwe asd zxc

【问题讨论】:

标签: bash shell mergesort


【解决方案1】:

你可以简单地使用paste -s

cut -d'=' -f2 $BS | sort -u | paste -s

Sun 操作系统版本:

cut -d'=' -f2 $BS | sort -u | paste -s -

见:

$ cat tubs 
qwe  
asd  
zxc
$ cat tubs | paste -s -
qwe     asd     zxc

项目以制表符分隔,但您可以选择分隔符。带空格的示例:

$ cat tubs 
qwe  
asd  
zxc
$ cat tubs | paste -s -d' ' -
qwe asd zxc

小心你的例子:

cutbs=`cut -d'=' -f2 $BS | sort -u`

创建一个变量,然后运行

$cat cutbs

输出文件内容,与$cutbs完全无关

【讨论】:

  • "paste -s" 对我来说不能正常工作。我的机器:“sunos 10”
  • 更新了我的答案,用 SunOS 5.10 (Solaris 10 10/09) 测试
【解决方案2】:

你可以使用 sed:

$ cat $cutbs | sed -n -e ':start $!{N;s/\n/ /;t start;};P;D;'

或者说:

$ cat $cutbs | tr '\n' ' '

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2014-05-27
    相关资源
    最近更新 更多