[英]Copying certain words from one file to another using command line
我有一個以下格式的文本文件:
{
Name: Me
Age:17
Qualification : Doctor
}
{
Name: You
Age:21
Qualification : Another Doctor
}
我需要將“年齡”行中的數字(在這種情況下為“ 17”和“ 21”)復制到以下格式的另一個文件中:
17,21.
如您所見,我正在嘗試在文件1的某個字段中創建數字的文件2 CSV。我需要使用Shell腳本自動執行此操作。 請為此提出一個解決方案。
當我在Google上搜索時,出現了“ sed”選項,但我找不到解決此問題的緊湊解決方案。
預先感謝您的時間和貢獻。
像這樣嗎?
awk -F: '/Age/ {printf "%s,",$2} END {print ""}' file1 >agefile
cat agefile
17,21,
這是Jotne的回應的變體,其中包含整理的結尾逗號:
awk -F: '/Age:/{r=r $2 ","}END{sub(/,$/,"",r);print r}' a
17,21
基本上,它通過查找包含“ Age”的行,然后在該行上附加第二個字段並在其后添加逗號,在變量“ r”中建立結果字符串。 最后,它將什么都替換為逗號(在該行的末尾),然后輸出結果字符串“ r”。
這可能對您有用(GNU sed):
sed '/\s*Age:\s*/H;$!d;x;s///;s//,/g' file
這會將帶有Age:
的行添加到保留空間(HS),並刪除其他所有內容。 在結束文件時,它交換到HS並刪除不需要的文本與替換它,
的。
@ECHO OFF
SETLOCAL
SET "number1="
(
FOR /f "tokens=1,2delims=: " %%a IN (q20072209.txt) DO IF "%%a"=="Age" (
IF DEFINED number1 (
CALL ECHO %%number1%%,%%b.
SET "number1="
) ELSE SET number1=%%b
)
)>newfile.txt
TYPE newfile.txt
GOTO :EOF
完全不確定如果有一對以上的數據元素,將會發生什么。 q20072209.txt
是輸入文本文件的名稱,並且將生成newfile.txt
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.