原例子出處: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模式。
先留個問題待解決吧