以下はサンプル入力ファイルです。
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
答え2
POSIX sedの使用:
sed -e 's/^\([^[:blank:]]*\)[[:blank:]].*/\1/;t' -ed <file
答え3
タイトルフィールドの前に余分なスペースを追加するには、次のようにします。
grep -o "^[^ ]* \+" ip.txt
余分なスペースが欲しくない場合:
sed 's/ \+.*//' ip.txt
両方とも空の名前フィールドを持つ行を保持します。