GNU/Linux >> Znalost Linux >  >> Linux

získat prvních 5 znaků z každého řádku v shell skriptu

Pokud chcete použít cut tímto způsobem musíte použít přesměrování <<< (řetězec zde) jako:

var=$(cut -c-5 <<< "$line")

Všimněte si použití var=$(command) výraz namísto id= cut -c-5 $line . Toto je způsob, jak uložit příkaz do proměnné.

Použijte také /bin/bash místo /bin/sh aby to fungovalo.

Úplný kód, který mi funguje:

#!/bin/bash

filename='sample.txt'
while read -r line
do
  id=$(cut -c-5 <<< "$line")
  echo $id
  #code for passing id to other script file as parameter
done < "$filename"

No, je to jednořádkový cut -c-5 sample.txt . Příklad:

$ cut -c-5 sample.txt 
31113
31114
31111
31112

Odtamtud jej můžete převést na jakýkoli jiný skript nebo příkaz:

$ cut -c-5 sample.txt | while read line; do echo Hello $line; done
Hello 31113
Hello 31114
Hello 31111
Hello 31112

Linux
  1. Jak získat vlastní IP adresu a uložit ji do proměnné ve skriptu Shell?

  2. Počítání znaků každého řádku s Wc?

  3. Co znamená Ampersand na konci řádku skriptu Shell?

  1. Nedaří se vám získat správný výstupní kód ze skriptu?

  2. Jak rozdělit soubor a zachovat první řádek v každém z kusů?

  3. Vynechání prvního řádku z jakéhokoli výstupu příkazu Linuxu

  1. Jak získat prvních n znaků každého řádku v unixovém datovém souboru

  2. Jak získat PID z rozvětveného podřízeného procesu ve skriptu shellu

  3. Získejte konkrétní řádek z textového souboru pouze pomocí skriptu Shell