bash-{$1=$1;print $0}中關於$1 = $1的小疑問

原例子出處:https://blog.csdn.net/xuejinliang/article/details/52250599

文件cat dir.txt如下:
(說明下#符號無法顯示,就用%代替,實際上是#符號哈)
%
1
2
3
%
4
5
%
6
7
8
9
%

使输出结果为
1 2 3
4 5
6 7 8 9

处理的方式如下
原貼:

awk ‘{RS=”#\n”;ORS=”\n”;OFS=” ”;}NR!=1{$1=$1;print $0}’ file

實際上我發現下面也可以:

cat dir.txt | awk 'BEGIN{RS="#\n"}NR>1{$1=$1;print $0}'

疑問:
這裡的$1=$1有什麼作用呢?不加的話輸出如下:

$ cat dir.txt | awk 'BEGIN{RS="#\n"}NR>1{print $0}'
1
2
3

4
5

6
7
8
9

目前我也只在OFS和ORS對輸出結果進行分隔定義時才用到這個,那麼是否$1 = $1本身有對字段重新定義輸出的作用呢?即針對上述 1\n2\n3\n 作為一行來處理的數據,重新定義字段後實際上會格式化為1 2 3模式。

先留個問題待解決吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值