簡體   English   中英

cut 或 awk 命令打印第一行的第一個字段

[英]cut or awk command to print first field of first row

我正在嘗試打印輸出第一行的第一個字段。 情況就是這樣。 我只需要從此輸出中打印SUSE

# cat /etc/*release

SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 2

嘗試使用cat /etc/*release | awk {'print $1}' cat /etc/*release | awk {'print $1}'但打印每一行的第一個字符串

SUSE
VERSION
PATCHLEVEL

如果要從選定行捕獲輸出,請指定NR

awk 'NR==1{print $1}' /etc/*release

實現相同目標的另一種(丑陋)方法是:

awk '{print $1; exit}'

從輸出中的特定行(例如第 42 行)獲取第一個字符串的有效方法是:

awk 'NR==42{print $1; exit}'

使用NR內置變量指定行號

awk 'NR==1{print $1}' /etc/*release

試試這個:

head -1 /etc/*release | awk '{print $1}'

您可以使用head代替cat

head -n1 /etc/*release | awk '{print $1}'
sed -n 1p /etc/*release |cut -d " " -f1

如果制表符分隔:

sed -n 1p /etc/*release |cut -f1

嘗試

sed 'NUMq;d'  /etc/*release | awk {'print $1}'

其中 NUM 是行號

ex. sed '1q;d'  /etc/*release | awk {'print $1}'

awk、sed、管道,這很重

set `cat /etc/*release`; echo $1

您可以終止正在運行容器的進程。

使用此命令,您可以列出與 docker 容器相關的進程:

ps -aux | grep $(docker ps -a | grep container-name | awk '{print $1}')

現在您有了要使用killkill -9殺死的進程 ID。

df -h | head -4 | tail -1 | awk '{ print $2 }'

更改數字以根據您的喜好進行調整。

或者使用 while 循環,但這可能是一種不好的方式。

我能想到的最代碼高爾夫方式僅在awk中打印第一行:

 awk '_{exit}--_' # skip the quotations and make it just # awk _{exit}--_ # # if u're feeling adventurous
  1. 第一次通過退出塊, "_"未定義,因此它失敗並跳過第 1 行。

  2. 那么同一個計數器的遞減將使它在awk的眼中為“”(任何不是空字符串或數字零的東西在它們敏捷的布爾意義上都被認為是“真”)。 相同的計數器還會觸發第 1 行的默認打印操作。

     —- incrementing… decrementing… it's same thing, merely direction and sign inverted.
  3. 最后,在第 2 行的開頭,它符合進入操作塊的條件,指示它立即退出,從而執行與

awk '{ print; exit }'

......以稍微不那么冗長的方式。 對於單行打印,甚至不值得將FS設置為跳過字段分割部分。

使用該概念僅打印第一第一字段:

 awk '_{exit} NF=++_' awk '_++{exit} NF=_'
awk 'NR==1&&NF=1' file
grep -om1 '^[^ ]\+' file

# multiple files
awk 'FNR==1&&NF=1' file1 file2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM