ファイルの一部の内容を取得する

ファイルの一部の内容を取得する

だから私はこの問題を解決するためのツールがあることを聞いたことがあるので存在することを知っていますが、それが何であるかはわかりません。

ユーザー名を除く/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,31-3-b-cawkマタイの答え)

答え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(ファイルをパラメータとして手動で渡すことはできないため、まれな場合は適用されません。)

関連情報