だから私は、txtファイルの各行の最初のWordを印刷しようとしています。単語は1つの空白で区切られます。
cut -c 1 txt file
これはこれまでのコードですが、各行の最初の文字のみを出力します。ありがとう
Word全体を印刷するには、-f 1
ではなく-c 1
が必要です。また、デフォルトのフィールド区切り文字はSPACEではなくTABであるため、-d
オプションを使用する必要があります。
cut -d' ' -f1 filename
cut
では不可能な最後の2つの単語を印刷するには、行の先頭からしかカウントできないためです。代わりにawk
を使用します。
awk '{print $(NF-1), $NF;}' filename
あなたが試すことができます
awk '{print $1}' your_file
read Word _ < file
echo "$Word"
このソリューションの良い点は、ファイルの最初の行を超えて読み取らないことです。非常に簡潔で簡潔な構文を持つawkでさえ、最初の行を超えて読み取りを停止するには、明示的にtoldにする必要があります。 read
は、一度に1行だけを読み取ります。さらに、bashビルトイン(および多くのシェルのビルトイン)なので、新しいプロセスを実行する必要はありません。
各行の最初のWordを印刷する場合:
while read Word _; do printf '%s\n' "$Word"; done < file
ただし、ファイルが大きい場合、すべての行を読み取るためにawkまたはcutが優先されます。
-c
は文字用です。-f
フィールド、および-d
は、デフォルトのタブではなくスペースの区切りを示します。
cut -d " " -f 1 file
次を使用できます。
cut -d\ -f1 file
どこ:
\
を使用)\
の後にspace
があることに注意してください。