[英]How to remove leading and trailing " , remove leading and trailing spaces from each row each field in ksh
我在ksh腳本中有很多函數(很多使用gawk),這些函數對文件進行很多計算。 文件通過管道傳遞。 但是現在我的源文件改變了。 現在,文件中的每個字段都用雙引號引起,如下所示。 另外,我必須修剪前導和尾隨空格或制表符(如果有)。
Old_Myfile.txt
Name|Designation|emlid
Alex|Software Design Engg|E0023
Corner|SDE|E0056
New_Myfile.txt
"Name"|"Designation"|"emlid"
"Alex"|"Software Design Engg"|" E0023"
" Corner "|" SDE"|" E0056 "
請提出與我已經編寫的腳本兼容的方法。
與sed
$ sed 's/ *" *//g' file
Name|Designation|emlid
Alex|Software Design Engg|E0023
Corner|SDE|E0056
也可以在awk
腳本中組合,而無需執行此額外步驟。
該腳本可能針對您的需要進行了過度設計,但是它將在每個字段上單獨運行(在for循環內),以防您稍后需要添加其他邏輯。
BEGIN{
FS="|";
OFS="|";
}
{
for(i=1; i<=NF; i++){
gsub(/(^"[ ]*|[ ]*"$)/, "", $i);
if (i == NF) {
printf("%s\n", $i);
}
else {
printf("%s%s", $i, OFS);
}
}
}
這是輸出
$ awk -f /tmp/script.awk </tmp/input.txt
Name|Designation|emlid
Alex|Software Design Engg|E0023
Corner|SDE|E0056
如果您引用的字段不能包含|
然后在現有的awk腳本中將其添加為第一行:
awk '
{ gsub(/[[:space:]]*"[[:space:]]*/,"") }
<existing script>
'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.