Итак, я написал скрипт, в котором я сравниваю два файла
, чтобы мои файлы были file1:
This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 5.
file 2:
this is line 1,aaa
this is line 2,bbb
this is line 3,ccc
мой код находит, находится ли предложение, предшествующее (в файле2) запятой, в файле, и, если оно существует, замените его предложением, которое следует за запятой.
Вот мой код
awk -F'"(,")?' '
NR==FNR { r[$2] = $3; next }
{ for (n in r) gsub(n, r[n]) } 1' file2.csv file1.csv>output.csv
поэтому мой файл output.csv должен выглядеть следующим образом:
aaa
bbb
ccc
This is line 4.
This is line 5.
Этот код работает нормально, если нет совпадений между падежами в обоих файлах и в пробелах.поэтому при сравнении я хочу сравнивать без учета регистра и путем обрезки пробелов.Например:
When comparing:
file1:
thisisline1.
thisisline2.
thisisline3. etc
, и выходные данные должны быть в исходном формате
This is line 1.
. Я ищу на лету обрезку и преобразование строчных букв
edit: Сделать этот вопрос более ясным относительно детали отделки салона.Я написал код:
cat file2.csv|tr -s ' '>file3.csv
, что это делает, обрезать несколько пробелов в один, так что
This is line 1.
такая же, как
This is line 1.
Но проблемапроисходит, если существует пустая строка с одним или несколькими пробелами, например:
this is line 1,aaa
this is line 2,bbb
(blank line but with space)
this is line 3,ccc
this is line 4.
this is line 5.
, поэтому, когда я сначала использую свою команду awk, а затем функцию обрезки, это не выполняется.так что даже с этим файлом мой вывод должен быть
aaa
bbb
ccc
This is line 4.
This is line 5.