次のCSVファイルがあります。
id,country
12343,China
23455,Japan
47,Singapore
374,Australia
6572e,United Kingdom
- まず、列IDの長さが3より大きい行の総数を計算したいと思います。
- 次に、IDの長さが5ではなく、IDにアルファベット文字を含む行を削除したいと思います。
- 最後に、結果を保存する新しいファイルを作成したいと思います。
awkメソッドを試しましたが、次のような結果が得られました。
mylaptop@MacBook-Pro ~ % awk 'length($1)!=19 {c++} END {print c+0}' myfile
quote>
次のコマンドを入力すると:
mylaptop@MacBook-Pro ~ % awk 'length($1)!=19 {c++} END {print c+0}' <myfile>
以下が表示されます。
zsh: parse error near `\n'
予想される出力はMac端末に似ている必要があります。
mylaptop@MacBook-Pro ~ % awk 'length($1)!=19 {c++} END {print c+0}' myfile
4
ファイルのすべての変更を保存します。
私はLinuxを初めて使用するために3つの質問の完全なコマンドを表示できますか?
ベストアンサー1
これは宿題だと思います!
列 1 の長さが 3 より大きい行数を計算します。
awk 'length($1)>3 {c++} END {print c+0}'
最初の列の長さが5以外の行を削除します。
awk 'length($1)==5'
列 1 の長さが 5 ではなく、数字以外の行を削除します。
awk 'length($1)==5 && $1 !~ /[^0-9]/'
シェルを使用して出力を新しいファイルとして指定します。
編集:ファイルは元のタブ区切りファイルとして表示され、現在はCSVで編集されています。これは解決策が必要であることを意味します。
awk -F, 'length($1)>3 {c++} END {print c+0}'
awk -F, 'length($1)==5'
awk -F, 'length($1)==5 && $1 !~ /[^0-9]/'