如何在linux终端提示符下使用awk,sed,grep或cut来获取文本文件内容到表

时间:2014-10-18 07:32:28

标签: awk sed grep cut

cat raw.txt

Name country IP Cost  
sam us 10.10.10.10 $250  
jack India 10.10.10.12 $190  
joy Australia 10.10.10.13 $230  
christ canada 10.10.10.15 $190  
jackson africa 10.10.10.20 $230

我需要像表列表一样输出四列四行,即名称国家IP成本

http://res.cloudinary.com/dzy8bgton/image/upload/v1413617325/Screenshot_from_2014-10-18_12_35_11_h6wjsu.png

请任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

这是旧学校的答案: - )

#!/bin/sh
# use tbl|nroff to make an ASCII table
# use sed to change multiple spaces into a  single tab for tbl(1)
sed 's/  */\t/g' < raw.txt | awk '
BEGIN {
    print ".TS" # beginning of table
    print "allbox;" # allbox format
    print "c s s s" # Table name format - centered and spanning 4 columns
    print "lb lb lb lb" # bold column headers
    print "l l l l." # table with 4 left justified columns. "." means repeat for next line
    print "My Table" # Table name
}
{print} # print each line of 4 values
END {
    print ".TE" # end of table
}' | tbl | nroff -Tdumb

生成

┌─────────────────────────────────────────┐
│                My Table                 │
├────────┬───────────┬─────────────┬──────┤
│Name    │ country   │ IP          │ Cost │
├────────┼───────────┼─────────────┼──────┤
│sam     │ us        │ 10.10.10.10 │ $250 │
├────────┼───────────┼─────────────┼──────┤
│jack    │ India     │ 10.10.10.12 │ $190 │
├────────┼───────────┼─────────────┼──────┤
│joy     │ Australia │ 10.10.10.13 │ $230 │
├────────┼───────────┼─────────────┼──────┤
│christ  │ canada    │ 10.10.10.15 │ $190 │
├────────┼───────────┼─────────────┼──────┤
│jackson │ africa    │ 10.10.10.20 │ $230 │
└────────┴───────────┴─────────────┴──────┘

答案 1 :(得分:0)

您可以尝试column命令:

column -t file
Name     country    IP           Cost
sam      us         10.10.10.10  $250
jack     India      10.10.10.12  $190
joy      Australia  10.10.10.13  $230
christ   canada     10.10.10.15  $190
jackson  africa     10.10.10.20  $230