我想要打印前255个字符,然后用' ^'分隔整行。字符。
(现在我一次只测试10个字符,而不是255个。) 例如,这可以解决一个大问题:
cat myfile.txt | sed -e 's:^\(.\{10\}\)\(.*\)$:\1^\1\2:'
问题是有些线条非常短,在这种情况下,我想打印整行两次,用' ^'字符。
例如:
1234567890987654321
123
应打印为:
1234567890^1234567890987654321
123^123
我真的不需要使用sed,但似乎sed应该能够做到这一点 - 但任何一行命令都会很好。
答案 0 :(得分:2)
它只需要对你的sed
脚本进行几乎微不足道的调整 - 你想要打印一行的前N个字符,然后是插入符号和整行,所以你指定一个带数字的范围和上限之前的逗号:
sed -e 's:^\(.\{1,10\}\)\(.*\)$:\1^\1\2:'
或(减少反斜杠和记住字符串的数量):
sed -e 's:^.\{0,10\}:&^&:'
这会将插入符号添加到空行;带1,10
的版本将空行留空。
顺便提一下,Mac OS X sed
在逗号之前需要一个数字; GNU sed
遵循传统并且不需要它,并将前导缺失的数字视为0.因此,可移植代码不会写:
sed -e 's:^.\{,10\}:&^&:'
它适用于sed
的某些,可能是大多数但不是所有版本。
答案 1 :(得分:1)
您可以轻松地使用awk
:
awk '{print substr($0, 1, 10) "^" $0}' file
1234567890^1234567890987654321
123^123