だから私はこの問題を解決するためのツールがあることを聞いたことがあるので存在することを知っていますが、それが何であるかはわかりません。
ユーザー名を除く/etc/passwdのすべてのデータをフィルタリングするのと同じことをしたいと思います。
たとえば、次のファイルからuser1、user2、user3をインポートしたいとします。この場合、ロジックは「ファイルの各行から最初の ':' テキストをインポートする」ことができます。
user1:x:1:4
user2:x:2:5
user3:x:3:6
出力は次のとおりです。
user1
user2
user3
答え1
cut
この目的のために存在します。この-d
フラグは区切り文字を指定し、-f
出力するフィールドを指定します。
cut -d: -f1 /etc/passwd
の引数は、最初と3番目のフィールドを表示するか、最初の3つのフィールドを表示することで-f
あり、フィールドの代わりにバイトと文字を読み取るフラグもあります。より柔軟なものが必要な場合は、通常解決策があります(参照1,3
1-3
-b
-c
awk
マタイの答え)
答え2
フォーム入力からデータを抽出するたびに考慮すべき事項アッ。ほとんどすべてのUnixシステムで使用できるので、次のようにすることをお勧めします。
awk -F':' '{print $1}' /etc/passwd
-F':'
:":" を列区切り文字として定義します。'{}'
:各行に対してこのコマンドを実行します。print $1
:最初の列を画面に印刷します。
答え3
これはPerlコードの1行です:
perl -F/:/ -lane 'print $F[0]' /etc/passwd
答え4
あなたの例では、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
(ファイルをパラメータとして手動で渡すことはできないため、まれな場合は適用されません。)