script reemplazar programas manejo lineas leer fichero extraer ejemplos comando cadenas bash

reemplazar - ¿Cómo obtener la primera línea de un archivo en un script bash?



sed reemplazar/ (6)

Tengo que poner una variable bash en la primera línea de un archivo. Supongo que es con el comando grep, pero ¿hay alguna forma de restringir el número de líneas?


Esto es suficiente y almacena la primera línea de filename de filename en la variable $line :

read -r line < filename

También me gusta awk por esto:

awk ''NR==1 {print; exit}'' file

Para almacenar la línea en sí, use la sintaxis var=$(command) . En este caso, line=$(awk ''NR==1 {print; exit}'' file) .

O incluso sed :

sed -n ''1p'' file

Con la line=$(sed -n ''1p'' file) equivalente line=$(sed -n ''1p'' file) .

Vea una muestra cuando alimentamos la read con la secuencia seq 10 , es decir, una secuencia de números del 1 al 10:

$ read -r line < <(seq 10) $ echo "$line" 1 $ line=$(awk ''NR==1 {print; exit}'' <(seq 10)) $ echo "$line" 1


La pregunta no preguntó cuál es la más rápida, pero para agregar a la respuesta sed, -n ''1p'' tiene un rendimiento incorrecto ya que el espacio del patrón aún se escanea en archivos grandes. Por curiosidad, descubrí que ''cabeza'' gana por sed de manera estrecha:

# best: head -n1 $bigfile >/dev/null # a bit slower than head (I saw about 10% difference): sed ''1q'' $bigfile >/dev/null # VERY slow: sed -n ''1p'' $bigfile >/dev/null


Solo echo la primera lista de su archivo de origen en su archivo de destino.

echo $(head -n 1 source.txt) > target.txt


para leer la primera línea usando bash, use la instrucción read . p.ej

read -r firstline<file

firstline será su variable (No es necesario asignar a otro)


head toma las primeras líneas de un archivo y el parámetro -n se puede usar para especificar cuántas líneas se deben extraer:

line=$(head -n 1 filename)


line=$(head -1 file)

Funcionará bien (Como respuesta anterior). Pero

line=$(read -r FIRSTLINE < filename)

será marginalmente más rápido ya que read es un comando bash incorporado.