У меня есть файл, как показано ниже, с несколькими сотнями строк:
$ cat file1
TAP 1.0
.1.2.3.0 .0.3.2.1.1
.1.2.3.1 .1.3.2.1.1
.1.2.3.2 .2.3.2.1.1
.1.2.3.3 .3.3.2.1.1
.1.2.3.4 .4.3.2.1.1
.1.2.3.5 .5.3.2.1.1
TAP 1.0
.1.2.3.0 .0.3.2.1.2
.1.2.3.1 .1.3.2.1.2
.1.2.3.2 .2.3.2.1.2
.1.2.3.3 .3.3.2.1.2
.1.2.3.4 .4.3.2.1.2
.1.2.3.5 .5.3.2.1.2
TAP 1.0
.1.2.3.0 .0.3.2.1.3
.1.2.3.1 .1.3.2.1.3
.1.2.3.2 .2.3.2.1.3
.1.2.3.3 .3.3.2.1.3
.1.2.3.4 .4.3.2.1.3
.1.2.3.5 .5.3.2.1.3
.....
Из файла выше, мне нужно grep только два ".1.2.3.1" и ".1.2.3.0" и распечатать какниже:
(( Desired Output))
.1.3.2.1.1 .0.3.2.1.1
.1.3.2.1.2 .0.3.2.1.2
.1.3.2.1.3 .0.3.2.1.3
....
Мой код работает только для поиска определенной строки, как показано ниже: awk:
s1 вывод ниже, где он ищет .1.2.3.1 и выдаёт вывод всехстолбцы, за исключением 1-го столбца, как показано ниже:
command: s1= cat $file1 | grep -i '.1.2.3.1' | awk '{$1=""; print $0}'
O/P(Output):
.1.3.2.1.1
.1.3.2.1.2
.1.3.2.1.3
Таким же образом s2 выдает выходные данные, как указано выше для grepping .1.2.3.0, как показано ниже:
command: s2= cat $file1 | grep '.1.2.3.0' | awk '{$1=""; print $0}'
O/P:
.0.3.2.1.1
.0.3.2.1.2
.0.3.2.1.3
Итак, полный вывод для s1 и s2будет выглядеть так, как показано ниже, когда я буду работать одновременно ( это не то, что я хочу ):
s1= cat $file1 | grep -i '.1.2.3.1' | awk '{$1=""; print $0}'
s2= cat $file1 | grep '.1.2.3.0' | awk '{$1=""; print $0}'
O/P:
.1.3.2.1.1
.1.3.2.1.2
.1.3.2.1.3
.0.3.2.1.1
.0.3.2.1.2
.0.3.2.1.3
Мне нужен вывод, как показано ниже, как я могу напечатать мой выше какниже: ( Должно быть как показано ниже )
Desired Output:
.1.3.2.1.1 .0.3.2.1.1
.1.3.2.1.2 .0.3.2.1.2
.1.3.2.1.3 .0.3.2.1.3
.. etc
Вывод должен быть в самом формате "echo $ s1 $ s2", но вывод должен быть таким же, как указано вышенекоторое условие цикла, считывая и печатая одну переменную S1 и S2 за раз, вместо того, чтобы сначала печатать весь S1, а затем весь вывод S2.
Так что мне нужно временно хранить каждую переменную чтения в S1 и S2 и печатать одну за другой в последовательности, как указано выше.
Таким образом, вывод выше будет происходить только тогда, когда он выполняется ниже в сценарии:
- First grepped output of .1.2.3.1 should be kept in variable s1
- First grepped output of .1.2.3.0 should be kept in variable s2
then print both first grepped one's of both temporary string as echo $s1 $s2 as below:
.1.3.2.1.1 .0.3.2.1.1
- Do in the same way for second grepped temporary output for both as below:
.1.3.2.1.2 .0.3.2.1.2
- Do in the same way for all Nth grepped output as below:
.1.3.2.1.1 .0.3.2.1.1
.1.3.2.1.2 .0.3.2.1.2
....
.1.3.2.1.Nth .0.3.2.1.Nth
Для всей последовательности он должен печатать с учетом одного grep за раз вместо всех сгоревших выходных данных.
Что касается вашего лучшего понимания, он лучше работает для одной строки для определенного grepкак показано ниже:
[root@server]$cat file0
.1.2.3.0 .0.3.2.1.1
.1.2.3.1 .1.3.2.1.1
.1.2.3.7 .3.3.2.1.1
[root@server]$ s1=`cat file0 | grep -i '.1.2.3.1' | awk '{$1=""; print $0}'`
[root@server]$ s2=`cat file0 | grep '.1.2.3.0' | awk '{$1=""; print $0}'`
host$ echo $s1 $s2
.1.3.2.1.1 .0.3.2.1.1
Но как это работает для "file1", как "file0", и как я могу напечатать, как указано выше !!
Спасибо!