awk用空格做分隔符,且数据用空格占位。输出列是错位的怎么处理? 如何用awk命令用一个或多个空格做分隔符
\u5728linux\u4e2d\u4f7f\u7528awk\u628a\u6587\u4ef6\u5b9a\u957f\u8f6c\u6362\u6210\u5206\u9694\u7b26\uff0c\u5168\u90e8\u662f\u7a7a\u683c\u53d8\u6210\u4e00\u4e2a\u7a7a\u683c\u663e\u793a\u3002echo "aaabbb ccc ddd" | sed -e 's/\(.\{3\}\)/\1|/g' -e 's/ //g' -e 's/||/| |/g' -e 's/|$//'
awk -F" *"\u5f53 -F\u540e\u9762\u8ddf\u7740\u4e00\u4e2a\u4ee5\u4e0a\u5b57\u7b26\u65f6\uff0c\u8fd9\u4e2a\u5b57\u7b26\u4e32\u88ab\u5f53\u6210\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u6240\u4ee5" *"\u4e24\u4e2a\u7a7a\u683c\u8ddf\u4e00\u4e2a\u661f\u53f7\u8868\u793a\u7528\u4e00\u4e2a\u6216\u591a\u4e2a\u7a7a\u683c\u505a\u5206\u9694\u7b26
题主你好,
对于题主问题中其实主要有两点要理解的:
前提: 假设x为分隔符(重点:x不是空格或tab)
1. 非处于开头位置的连续分隔符的处理; // 如1xx2
2. 处于开头位置的连续分隔符的处理; // 如 xx1x2
------------------
对于1xx2的处理:
因为xx都是分隔符,所以处理这种情况时就会在xx之间插入空格(下面以0来表示空格,看着更直观一些),即
1x0x2
***
对于xx1x2来说也是一样的,
0x0x1x2
上面空格的插入你仔细想一下就可以理解,因为x是分隔符,这样插入后你就可以直观的看出$1,$2...
==========
对于分隔符是空格或tab的处理还不一样(假设y为空格或tab):
1yyy3
1y2y3
yy2y3
1y2y3y4
1y2y3
此时开头空白会被去掉, 非开头的连续空白会被替换为1个空格:
1y3
1y2y3
2y3
1y2y3y4
1y2y3
此时对于$1,$2...都是谁一目了然
题主看明白我上面写的,再去理解一下问题,看看是否就明白了,不明白追问
写在最后: 对于上面的处理逻辑,我也是根据输出结果总结出来的, 没有相应的资料论证
就题主题目中这几行数据,如果想要得到相应的结果可以使用:
也就是说,题主给的那些数据,连续空格被预处理成了另一种形式, 如果题主非要输出图片中的期望结果,就要将数据构造为一般格式, 然后进行相应的输出.
希望可以帮到题主, 欢迎追问
绛旓細涓婇潰绌烘牸鐨勬彃鍏ヤ綘浠旂粏鎯充竴涓嬪氨鍙互鐞嗚В,鍥犱负x鏄鍒嗛殧绗,杩欐牱鎻掑叆鍚庝綘灏卞彲浠ョ洿瑙傜殑鐪嬪嚭$1,$2...=== 瀵逛簬鍒嗛殧绗︽槸绌烘牸鎴杢ab鐨勫鐞嗚繕涓嶄竴鏍(鍋囪y涓虹┖鏍兼垨tab):1yyy3 1y2y3 yy2y3 1y2y3y4 1y2y3 姝ゆ椂寮澶绌虹櫧浼氳鍘绘帀, 闈炲紑澶寸殑杩炵画绌虹櫧浼氳鏇挎崲涓1涓┖鏍:1y3 1y2y3 2y3 1...
绛旓細awk 'BEGIN{FS="\n"; RS="\n[ \t\n]*\n|^\n+"} {print $1}' aa.txt
绛旓細awk -F" *"褰 -F鍚庨潰璺熺潃涓涓互涓婂瓧绗︽椂锛岃繖涓瓧绗︿覆琚綋鎴愭鍒欒〃杈惧紡锛屾墍浠" *"涓や釜绌烘牸璺熶竴涓槦鍙疯〃绀虹敤涓涓垨澶氫釜绌烘牸鍋氬垎闅旂
绛旓細绠鍗曟潵璇awk灏辨槸鎶婃枃浠堕愯鐨勮鍏ワ紝浠绌烘牸涓洪粯璁鍒嗛殧绗灏嗘瘡琛屽垏鐗囷紝鍒囧紑鐨勯儴鍒嗗啀杩涜鍚勭鍒嗘瀽澶勭悊銆俛wk鏈変笁涓笉鍚岀殑鐗堟湰锛歛wk銆乶awk鍜実awk锛屾湭浣滅壒鍒鏄庯紝涓鑸寚gawk锛実awk鏄痑wk鐨凣NU鐗堟湰銆備箣鎵浠ュ彨awk鏄洜涓哄叾鍙栦簡涓変綅鍒涘浜篈lfred Aho,Peter Weinberger,鍜孊rian Kernighan鐨凢amily Name鐨勯瀛楃銆俛wk鏍...
绛旓細榛樿鍩鍒嗛殧绗鏄"绌虹櫧閿" 鎴 "[tab]閿"锛屾墍浠$1琛ㄧず鐧诲綍鐢ㄦ埛锛$3琛ㄧず鐧诲綍鐢ㄦ埛ip锛屼互姝ょ被鎺ㄣ備娇鐢ㄦ柟娉 灏界鎿嶄綔鍙兘浼氬緢澶嶆潅锛屼絾璇硶鎬绘槸杩欐牱锛屽叾涓 pattern 琛ㄧず AWK 鍦鏁版嵁涓煡鎵剧殑鍐呭锛岃 action 鏄湪鎵惧埌鍖归厤鍐呭鏃舵墍鎵ц鐨勪竴绯诲垪鍛戒护銆傝姳鎷彿锛坽}锛変笉闇瑕佸湪绋嬪簭涓缁堝嚭鐜帮紝浣嗗畠浠敤浜庢牴鎹壒瀹...
绛旓細awk鍛戒护璇﹁В锛歛wk鏄竴涓己澶х殑鏂囨湰鍒嗘瀽宸ュ叿锛岀浉瀵逛簬grep鐨勬煡鎵撅紝sed鐨勭紪杈锛宎wk鍦ㄥ叾瀵鏁版嵁鍒嗘瀽骞剁敓鎴愭姤鍛婃椂锛屾樉寰楀挨涓哄己澶с傜畝鍗曟潵璇碼wk灏辨槸鎶婃枃浠堕愯鐨勮鍏ワ紝浠绌烘牸涓洪粯璁鍒嗛殧绗灏嗘瘡琛屽垏鐗囷紝鍒囧紑鐨勯儴鍒嗗啀杩涜鍚勭鍒嗘瀽澶勭悊銆俛wk鏈3涓笉鍚岀増鏈細awk銆乶awk鍜実awk锛屾湭浣滅壒鍒鏄庯紝涓鑸寚gawk锛実awk鏄AWK鐨...
绛旓細瑙佷笅鍥 awk榛樿浣跨敤绌烘牸鍋氫负鍒嗛殧绗︼紝鍙互鐪嬪埌锛屾垜杈撳嚭浜"a b c d e" 姣忎釜瀛楁瘝涔嬮棿閮芥湁涓┖鏍 鍒氬ソ鎴戝彲浠ュ埄鐢╝wk榛樿浣跨敤绌烘牸浣滀负鍒嗛殧绗杩欎竴鐗圭偣鏉ヨ繘琛屽垎鍓茶繃婊 杩欐牱杩囨护鍑烘潵鐨勭涓鍒楀氨鏄痑锛岀浜屽垪灏辨槸b...浠ユ绫绘帹銆傚鏋滄湁澶嶆潅鐨勩侀毦澶勭悊鐨勫彲浠ョ户缁拷闂紝鎴戜篃寰堝枩娆㈣В鍐宠繖浜涢棶棰 ...
绛旓細榛樿鎯呭喌涓嬶紝awk浠绌烘牸鍜屽埗琛ㄧ涓鍒嗛殧绗︼紝浣嗙敤鎴峰彲浠ヨ嚜瀹氫箟锛屽鐢"-F"鎸囧畾閫楀彿鍜屽啋鍙蜂负鍒嗛殧绗︺俛wk鐨勫唴缃彉閲忎赴瀵岋紝濡傚瓧娈靛彉閲$1銆$2绛夛紝杩樻湁鏂囦欢鍚嶃佽鍙峰拰琛屽绛夐檮鍔犱俊鎭紝鍙互閫氳繃鐗瑰畾鍛戒护娣诲姞鍒拌緭鍑轰腑銆俛wk鐨勬潯浠跺垽鏂姛鑳藉厑璁哥瓫閫夋弧瓒崇壒瀹氭潯浠剁殑琛岋紝渚嬪绛涢塿el灏忎簬5.0鐨勮褰曘俛wk杩樻敮鎸佸揩閫熺粺璁★紝...
绛旓細閫氬父锛屽湪涓嶆寚鍚-F鍩鍒嗛殧绗鐨勬儏鍐典笅锛岄粯璁ょ殑鍩熷垎闅旂鏄绌烘牸銆 2. 灏嗘墍鏈夌殑awk鍛戒护鎻掑叆涓涓崟鐙枃浠讹紝鐒跺悗璋冪敤: awk -f awk-script-file input-file(s) 鍏朵腑锛-f閫夐」鍔犺浇awk-script-file涓殑awk鑴氭湰锛宨nput-file(s)璺熶笂闈㈢殑鏄竴鏍风殑銆2.2 鍛戒护閫夐」锛1锛-F fs or --field-separator fs...
绛旓細awk鍐呯疆浜嗕竴浜涘彉閲忥紝濡侼F琛ㄧず褰撳墠琛岋紙$0锛夌殑瀛楁鎬绘暟锛孨R琛ㄧず褰撳墠澶勭悊鐨勮鏁帮紝FS鍒欐槸榛樿鐨勫瓧娈鍒嗛殧绗︼紝閫氬父涓绌烘牸銆傛澶栵紝awk杩樻敮鎸侀昏緫杩愮畻绗︼紝浣垮緱澶勭悊鏁版嵁鏃跺叿澶囦赴瀵岀殑鏉′欢鍒ゆ柇鑳藉姏銆AWK浣滀负Linux鍙婂叾瀹冪幆澧冧腑鍔熻兘寮哄ぇ鐨勬暟鎹鐞嗗紩鎿庯紝鍏跺己澶фц兘婧愪簬鍏朵赴瀵岀殑鐗规э紝鍖呮嫭鏍峰紡澶勭悊銆佹祦鎺у埗銆佹暟瀛﹁繍绠椼佽繘绋...