#A9999999999999 012021I
0099999999 000000000099999999+000000000000000000-000000000000000000-
0099999999 000000000099999999+000000000000000000-000000000000000000-
0099999999 000000000099999999+000000000000000000-000000000000000000-
0099999999 000000000099999999+000000000000000000-000000000000000000-
对于第一行,我想再创建 3 列
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
此示例将包括 3 列,其中包含第一行的值,第一列包含这些位置:第一列 (08-15)、第二列 (30-35)、第三列位置 36 以及第一行的数据。
在插入文件的第一部分期间,选项卡对某些浏览器的结构进行了一些更改。所以我放了一张文件布局的照片。
我目前正在使用 Debian。我尝试使用cat
和 的前几次尝试sed
。由于我不熟悉语法,所以我来询问一些示例。
答案1
在每个 Unix 机器上的任何 shell 中使用任何 awk:
$ cat tst.awk
BEGIN { OFS="," }
NR==1 {
pfx = substr($0,8,7) OFS substr($0,30,6) OFS substr($0,36,1)
next
}
{
gsub(/[+-]/,"& ")
$1 = pfx OFS $1
print
}
$ awk -f tst.awk file
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-
9999999,012021,I,0099999999,000000000099999999+,000000000000000000-,000000000000000000-