awkまたはsedを使用して最初の列のスペースを印刷する方法

awkまたはsedを使用して最初の列のスペースを印刷する方法

以下はサンプル入力ファイルです。

ip.txt:

john    math
        science
paul    math
        science
rosy    math
jill    science
rob     math
        science
hary    math

希望の出力:

john

paul

rosy
jill
rob

hary

私が使用するとき:

awk '{print $1}' ip.txt

私の結果は次のとおりです

john
science
paul
science
rosy
jill
rob
science
hary

2番目の列の値を印刷したくないので、ファイルにスペースを印刷したいです。

この目標をどのように達成できますか?私はSolaris 5.10とksh

ベストアンサー1

奇妙な:

awk '{print (NF>1) ? $1 : ""}' file

フィールド数が 1 より大きい場合は最初のフィールドを印刷し、それ以外の場合は空行を印刷します。

いくつかの追加の考え:

  • データがタブで区切られている場合

    awk -F '\t' '{print $1}' file
    
  • 最初の8文字を抽出するには

    awk '{print substr($0,1,8)}' file
    

おすすめ記事