簡體   English   中英

使用命令行將某些單詞從一個文件復制到另一個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM