回答:
cut
まさにこの目的のために存在します。-d
フラグは、区切り文字を指定し、-f
出力するフィールドを指定:
cut -d: -f1 /etc/passwd
への引数は、最初と3番目のフィールドを表示する、または最初の3つを表示する-f
ようなものにすることができます。フィールドの代わりにバイトと文字を読み取るためのおよびフラグもあります。より柔軟なものが必要な場合は、通常はトリックを実行します(マシューの回答を参照)1,3
1-3
-b
-c
awk
表形式の入力からデータを抽出するたびに、awkを検討する必要があります。ほぼすべてのUnixシステムで利用できるので、次の方法をとることをお勧めします。
awk -F':' '{print $1}' /etc/passwd
-F':'
:列区切り文字として「:」を定義します。'{}'
:この命令を行ごとに実行します。print $1
:最初の列を画面に出力します。tr
そしてat
、そうしないいくつかのことのいくつかの例です)。
あなたの例では、3つの名前はすべて同じ長さです。そのような場合-これは発生する可能性がありますが、/ etc / passwdの場合はそうではありません-colrmも使用できます。
echo "user1:x:1:4
> user2:x:2:5
> user3:x:3:6" | colrm 6
user1
user2
user3
または、もちろん
cat FILE | colrm 6
(useless use of cat
当てはまらないまれなケースです。パラメーターとして機能するFILEをcolrmに渡すことができないためです。)
cat
そこではまだ役に立たない:colrm 6 < FILE
。
cat foo | grep bar
。
awk
ファイル名を取得するので、パイプをスキップして実行できますawk -F: '{print $1}' /etc/passwd