Terminal 如何通过计算行中的特定字符来替换文件中的特定字符,仅替换行中的特定字符?
我想在一个文件夹的所有csv中增加一倍第4个逗号,共7行,仅7个逗号 在此命令行中,我将第4个逗号加倍:Terminal 如何通过计算行中的特定字符来替换文件中的特定字符,仅替换行中的特定字符?,terminal,command,command-line-interface,text-processing,Terminal,Command,Command Line Interface,Text Processing,我想在一个文件夹的所有csv中增加一倍第4个逗号,共7行,仅7个逗号 在此命令行中,我将第4个逗号加倍: sed 's/,/,,/4' Person_7.csv > new.csv 在此命令行中,我可以查找并计算一行中的所有逗号: sed 's/[^,]//g' dat | awk '{ print length }' 在这个命令行中,我可以计算并创建一个新文件,其中的行包含7个逗号: awk -F , 'NF == 7' <Person_test.csv >Pers
sed 's/,/,,/4' Person_7.csv > new.csv
在此命令行中,我可以查找并计算一行中的所有逗号:
sed 's/[^,]//g' dat | awk '{ print length }'
在这个命令行中,我可以计算并创建一个新文件,其中的行包含7个逗号:
awk -F , 'NF == 7' <Person_test.csv >Person_7.csv
但是我不知道如何做具体的工作…您需要一些东西来只选择正好包含7个逗号的行,然后只在这些行上操作。您可以使用sed执行此操作:
sed '/^\([^,]*,\)\{7\}[^,]*$/s/,/&&/4'
其中^\[^,]*,\\{7\}[^,]*$定义了一个正好包含7个逗号的行
不过,使用awk更容易一些:
awk -F, -v OFS=, 'NF == 8 { $4 = $4 OFS } 1'
这会将输入和输出字段分隔符设置为、,然后对于包含8个字段的行,7个逗号会在第4个字段的末尾添加一个,使逗号加倍。最后的1确保每一行都被打印出来