web-dev-qa-db-ja.com

テキストファイルunix bashの各行の最初のWordを印刷する

だから私は、txtファイルの各行の最初のWordを印刷しようとしています。単語は1つの空白で区切られます。

cut -c 1 txt file 

これはこれまでのコードですが、各行の最初の文字のみを出力します。ありがとう

18
ap1993

Word全体を印刷するには、-f 1ではなく-c 1が必要です。また、デフォルトのフィールド区切り文字はSPACEではなくTABであるため、-dオプションを使用する必要があります。

cut -d' ' -f1 filename

cutでは不可能な最後の2つの単語を印刷するには、行の先頭からしかカウントできないためです。代わりにawkを使用します。

awk '{print $(NF-1), $NF;}' filename
28
Barmar

あなたが試すことができます

awk '{print $1}' your_file
22
CS Pei
read Word _ < file
echo "$Word"

このソリューションの良い点は、ファイルの最初の行を超えて読み取らないことです。非常に簡潔で簡潔な構文を持つawkでさえ、最初の行を超えて読み取りを停止するには、明示的にtoldにする必要があります。 readは、一度に1行だけを読み取ります。さらに、bashビルトイン(および多くのシェルのビルトイン)なので、新しいプロセスを実行する必要はありません。

各行の最初のWordを印刷する場合:

while read Word _; do printf '%s\n' "$Word"; done < file

ただし、ファイルが大きい場合、すべての行を読み取るためにawkまたはcutが優先されます。

10
kojiro

-cは文字用です。-fフィールド、および-dは、デフォルトのタブではなくスペースの区切りを示します。

cut -d " " -f 1 file
1
Alex Howansky

次を使用できます。

cut -d\  -f1 file

どこ:

  • -dは区切り文字です(ここではスペースに\を使用)
  • -fはフィールドセレクターです

\の後にspaceがあることに注意してください。

1
termux overflow