[解決済み] awk コマンドでの `NF` の使用
2022-03-05 18:09:36
質問
私は2つのコマンドの違いが何であるかを理解しようとしています(私は2つから同じ結果を期待していました)。
ケースI
echo 'one,two,three,four,five' |awk -v FS=, '{NF=3}1'
one two three
ケース-II
echo 'one,two,three,four,five' |awk -v FS=, -v NF=3 '{$1=$1}1'
one two three four five
以下は、私の現在の理解です。
$1=$1
は、定義された変数を awk に再構築して使わせるために使われます。私は
FS
のように
-v FS=","
とは異なり、実質的には
-v NF=3
.
質問です。なぜ
NF=3
が有効にならないのに対して
FS=,
があります。
解決方法は?
https://www.gnu.org/software/gawk/manual/gawk.html#Options :
-v ヴァー = 値
--アサイン ヴァー = 値変数を設定する 変数 を値に設定します。 ヴァル プログラムの実行が開始される前に
https://www.gnu.org/software/gawk/manual/gawk.html#Fields :
NF
は定義済みの変数で、その値は現在のレコードのフィールド数である。awk
の値は自動的に更新されます。NF
は、レコードを読み込むたびに
最初のプログラムでは
{NF=3}
を上書きし、各行が読み込まれた後に
NF
.
2つ目のプログラムでは、最初に
NF=3
を経由して
-v
が、その値は最初の入力行を読み込むときに awk によって上書きされます。
FS
が異なるのは、awk はこの変数を決して設定しないためです。あなたが与えたどんな値も維持されます。
関連
-
[解決済み】awkで絶対値が効かない?
-
[解決済み] awk で区切られた文字列を配列に分割するには?
-
[解決済み] awk を使って最後の 2 列を表示する方法
-
[解決済み] awk で区切られた文字列を配列に分割するには?
-
[解決済み] awk を使って n 番目から最後までのすべての列を表示する
-
ROSを使ってワンクリックでデータディスクの作成、パーティション設定、フォーマット、マウントが可能
-
[解決済み] [Solved] AWKのフィールドセパレーターとして": "を使用するにはどうしたらいいですか?
-
[解決済み】awk で複数のデリミタを使用する場合
-
[解決済み] awk` の最後から2番目の列/フィールドを表示する。
-
[解決済み] [Solved] awk スクリプトでシェル変数を使うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】awkで絶対値が効かない?
-
[解決済み] awk 内でシングルクォートをエスケープする方法
-
[解決済み] awk を使って最後の 2 列を表示する方法
-
[解決済み] awk で配列の長さを得るにはどうしたらいいですか?
-
[解決済み] awk で区切られた文字列を配列に分割するには?
-
[解決済み] awk コマンドでの `NF` の使用
-
ROSを使ってワンクリックでデータディスクの作成、パーティション設定、フォーマット、マウントが可能
-
[解決済み】マッチした行の次の行だけを表示させるには?
-
[解決済み】awk で複数のデリミタを使用する場合
-
[解決済み] awk` の最後から2番目の列/フィールドを表示する。