Добавить строку после каждой строки, кроме строки заголовка и нижнего колонтитула

Решено, мне просто нужно было установить флажок «Синхронизировать» перед запуском службы в настройках времени, а затем снять флажок «Использовать источник местного времени».

1
05.06.2018, 20:21
5 ответов

Suponiendo que el encabezado y el pie de página son una línea cada uno :para la primera línea y la última línea, omita el procesamiento posterior. Cada línea se imprime de forma predeterminada.

$ seq 10 | sed '1n; $n; s/$/ hello/'
1
2 hello
3 hello
4 hello
5 hello
6 hello
7 hello
8 hello
9 hello
10
6
27.01.2020, 23:12

Con awk, para un archivo de cualquier número de líneas:

$ awk -v last=$(wc -l < input) 'NR!=1 && NR!=last { print $0 " and more stuff" } NR==1||NR==last { print }' input
header
foo and more stuff
bar and more stuff
baz and more stuff
quux and more stuff
freeble and more stuff
bletch and more stuff
footer

Obtenga el número de líneas en el archivo de entrada con wc, guárdelo en una variable awk. Luego imprima el encabezado y el pie de página por sí mismos, y todas las demás líneas con el sufijo:

NR!=1 && NR!=last {
   print $0 " and more stuff"
} 
NR==1 || NR==last {
    print
}
0
27.01.2020, 23:12

Con sedy de manera diferente agregará a todas las líneas s/$/.../excepto !la primera 1y qdesaparecerá si fue la última línea $por adelantado.

sed '$q ;1 !s/$/ append/' <(seq 10)
1
2 append
3 append
4 append
5 append
6 append
7 append
8 append
9 append
10

O usandoawk:

awk 'BEGIN{ getline line} {print line; line=$0 " append";} END{print $0}' <(seq 10)
1
2 append
3 append
4 append
5 append
6 append
7 append
8 append
9 append
10
1
27.01.2020, 23:12

Gracias a todos por las sugerencias. Fue realmente útil. He escrito debajo del comando para hacer lo mismo.

str _var=$ (awk -F'\|\^' '{imprimir $3}' abc.dat | cabeza -1)

awk -v last=$ (wc -l < inputFile)-vl="$str _var" '{if (NR==1 ){print $0 } else if (NR==último ){print $0} else{print $0 l}}' archivo de entrada > archivo de salida

0
27.01.2020, 23:12

Я сделал следующим способом

входной файл

10
20
30
40

команда

 for i in `awk '{print NR}' inputfile| wc -l| awk '{print $1-1}'`; do sed '2,'$i's/$/praveen/g' inputfile;done

выход

10
20praveen
30praveen
40
0
27.01.2020, 23:12

Теги

Похожие вопросы