0

次のような「名前」と言うファイルがあります

first middle last     userid
Brian Duke Willy      willybd
...

以下を使用するたびに

line=`grep "willybd" /dir/names`
name=`echo $line | cut -f1-3 -d' '`
echo $name

以下を出力します。

Brian Duke Willy      willybd
Brian Duke Willy

私の質問は、カットした元の行を最初に印刷せずに、「Brian Duke Willy」だけを印刷するにはどうすればよいですか?

4

3 に答える 3

3

この種のことを行う通常の方法は次のとおりです。

awk '/willybd/{ print $1, $2, $3 }' /dir/names

または、より具体的には

awk '$4 ~ /willybd/ { print $1, $2, $3 }' /dir/names

また

awk '$4 == "willybd" { print $1, $2, $3 }' /dir/names
于 2012-10-05T00:02:55.880 に答える
1
grep "willybd" /dir/names | cut "-d " -f1-3

カットのデフォルトの区切り文字は、スペースではなくタブです。

于 2012-10-04T23:20:24.070 に答える
0

中間変数が必要でない限り、使用できます

grep "willybd" /dir/names | cut -f1-3 -d' '

Linux の優れた機能の 1 つは、ほとんどのコマンドをフィルターとして使用できることです。これらのコマンドは からstdin読み書きしstdoutます。つまり、あるコマンドの出力を次のコマンドに「パイプ」することができます。それが|キャラクターのすることです。パイプと発音します。

于 2012-10-04T23:19:01.180 に答える