スクリプトを使用してフィールドで区切られたファイルから列を削除する

スクリプトを使用してフィールドで区切られたファイルから列を削除する

パイプ記号で区切られたファイル

マイファイル.txt

Hello|how|are|you|hope|you|are|doing|fine
Lilly|jasmine|rose|sunflower|nightfire|flowers

3より大きい列を削除したいです。結果セットが欲しい

Hello|how|are
Lilly|jasmine|rose

Unix シェルスクリプトで Unix コマンドを使用します。

答え1

OFSおよび(出力)フィールド区切り文字を使用してFS最初の3列のみを印刷します。

$ awk  'BEGIN{OFS=FS="|"}{print $1,$2,$3}' file.txt
Hello|how|are
Lilly|jasmine|rose

sed を使用して最初の 2 つだけを|[everything that's not |]維持します。

~$ sed 's/\(\(|[^|]*\)\{2\}\).*/\1/' file.txt
Hello|how|are
Lilly|jasmine|rose

答え2

cut -d'|' -f1-3 myfile

これがより簡単な解決策になります。うまくいきます!

答え3

awk内部で行えば十分です。

awk 'BEGIN{FS=OFS="|"}; NF=3' myfile.txt

(一部のコメントで述べたように、熱が17個の場合。3に変更17。)

関連情報