固定宽度文件有 15 个字段。第5个字段包含地址;它从第 19 个字符开始,到第 58 个字符结束(长度为 40)。有时地址包含一个\n
字符(数据中的换行符)。
如何在不影响实际行分隔符的情况下将其替换为双倍空格。
我给出了文件的更新数据集,文件的\n
某些行数据中将包含字符,只有其余的就可以了,即没有\n
字符,请参见下面的示例,然后如何处理:
输入示例:
01 DAVIDS 800 ABC VISAL NAGAR, ABC
BUILDING HYD TELANGANA 6000 DEVELOPER HR DEPT FULL TIME EMPLOYEE
03 ABCDEF 600 PQR NNNNN NAGAR, YYY BUILDING NZB TELANGANA 5000 DEVELOPER SA DEPT PART TIME EMPLOYEE
02 KAMAL 900 XYZ KAMAN NAGAR, DEF
BUILDING SEC TELANGANA 8000 DEVELOPER MR DEPT FULL TIME EMPLOYEE
04 CCCCCC 200 KKK HHHHH NAGAR, JJJ BUILDING KBR TELANGANA 1000 DEVELOPER AD DEPT FULL TIME EMPLOYEE
期望的输出:
01 DAVIDS 800 ABC VISAL NAGAR, ABC BUILDING HYD TELANGANA 6000 DEVELOPER HR DEPT FULL TIME EMPLOYEE
03 ABCDEF 600 PQR NNNNN NAGAR, YYY BUILDING NZB TELANGANA 5000 DEVELOPER SA DEPT PART TIME EMPLOYEE
02 KAMAL 900 XYZ KAMAN NAGAR, DEF BUILDING SEC TELANGANA 8000 DEVELOPER MR DEPT FULL TIME EMPLOYEE
04 CCCCCC 200 KKK HHHHH NAGAR, JJJ BUILDING KBR TELANGANA 1000 DEVELOPER AD DEPT FULL TIME EMPLOYEE
答案1
$ sed 'N; s/\n/ /' file
01 DAVIDS 800 ABC VISAL NAGAR, ABC BUILDING HYD TELANGANA 6000 DEVELOPER HR DEPT FULL TIME EMPLOYEE
02 KAMAL 900 XYZ KAMAN NAGAR, DEF BUILDING SEC TELANGANA 8000 DEVELOPER MR DEPT FULL TIME EMPLOYEE
这用于sed
进行必要的修改。
对于原始文件中的每一行,它读取下一行并将其附加到当前行,并以换行符作为分隔符。这是通过N
中的命令完成的sed
。然后使用该s///
命令将分隔换行符替换为两个空格字符。
将输出重定向到新文件名以保存它,例如
sed 'N; s/\n/ /' file >newfile